【问题标题】:Dropdown in ASP.NET MVC 3ASP.NET MVC 3 中的下拉菜单
【发布时间】:2013-02-27 16:53:15
【问题描述】:

我是 MVC 新手,所以可能很困惑。有人可以解释一下razor 中的下拉菜单吗?我的问题是-

  • dropdownlist和dropdownlistfor有什么区别
  • 如何将我的数据库表的 ID 列作为值传递,将 NAME 列作为文本传递。
  • 如何将“其他”添加到下拉列表中。
  • 如何在后面的代码中访问 selectedlistitem。

如果可能,请举例说明。

【问题讨论】:

    标签: asp.net-mvc drop-down-menu


    【解决方案1】:
    1. DropDownList 由如下代码生成:

      @Html.DropDownList("PersonId", new SelectList(Model.People, "Id", "Text");

      另一方面,DropDownListFor 是这样生成的:

      @Html.DropDownListFor(m => m.PersonId, new SelectList(Model.People, "Id", "Text")
      DropDownList 的问题在于它有一个魔术字符串,如果您决定稍后重构模型,那么您也会忘记更改魔术字符串。
    2. 您可以像这样执行 LINQ 查询:

      var datalist = New SelectList(from x in _peopleService
                                    select new SelectListItem { Text = x.Name, Value = x.Id});
      如果您之间没有服务或 ORM,则需要将其应用于您的情况,但您可以生成这样的列表。
    3. nr 2 之后,您可以

      datalist.Add(new SelectListItem() { Text = "Other", Value = "-1"});
      此外,您必须将该数据列表放在传递给视图的视图模型/模型中,以便您可以使用它生成一个选择列表项。在这种情况下,您可以这样做:
      @Html.DropDownListFor(x => x.PersonId, Model.PersonList);
      如果您将列表存储为模型中的 PersonList。
    4. 在您的 Viewmodel(嗯,mvc 中的模型)中,您有一个将存储所选项目的属性,请查看第一个问题 - 在这种情况下,所选项目的 id 将存储在 PersonId 属性中。

    【讨论】:

    • 你可能会提到枚举和下拉列表如何协同工作。我通常有一个下拉列表。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2018-04-25
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 2011-06-23
    • 2011-05-26
    相关资源
    最近更新 更多