【问题标题】:MVC .NET Create Drop Down List from Model Collection in Strongly Typed viewMVC .NET 在强类型视图中从模型集合创建下拉列表
【发布时间】:2012-10-04 19:49:09
【问题描述】:

所以我有一个像这样的集合类型的视图:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IList<DTO.OrganizationDTO>>" %>

OrganizationDTO 如下所示:

public OrganizationDTO
{
    int orgID { get; set; }
    string orgName { get; set; }
}

我只是想使用 HTML 帮助器从 OrganizationDTO 的集合中创建一个下拉列表,但对于我的生活,我无法弄清楚!我是不是走错了路?

我应该使用 foreach 循环来创建选择框吗?

【问题讨论】:

  • 好吧,我正在尝试使用 但我不确定这样做是否正确。
  • 这绝对是正确的做法。请问,具体有什么尝试?如果您不向我们展示您正在使用的代码,我们将无法帮助您。

标签: c# asp.net-mvc asp.net-mvc-2


【解决方案1】:

我做了一个小例子,和你一样的模型:

public class OrganizationDTO
{
    public int orgID { get; set; }
    public string orgName { get; set; }
}

还有一个控制器,例如:

public class Default1Controller : Controller
{
    //
    // GET: /Default1/

    public ActionResult Index()
    {
        IList<OrganizationDTO> list = new List<OrganizationDTO>();
        for (int i = 0; i < 10; i++)
        {
            list.Add(new OrganizationDTO { orgID = i, orgName = "Org " + i });
        }

        return View(list);
    }

}

在视图中:

<%= Html.DropDownListFor(m => m.First().orgID, new SelectList(Model.AsEnumerable(), "orgId","orgName")) %>

【讨论】:

  • 啊。这看起来像我需要的。第一部分让我失望,因为 m 是一个集合,我迷路了,因为 m => m.orgID 不存在。
  • 因此,根据答案Here,DropDownListFor 似乎是更好的选择,因为它是强类型的,所以我必须相信这个答案。谢谢!
  • @ColinPear 注意m.First().orgID,如果列表为空会报错。
【解决方案2】:

试试这个:

<%= Html.DropDownList("SomeName", new SelectList(Model, "orgID", "orgName"), "Please select Organization") %>

【讨论】:

  • 谢谢,方法很简单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多