0

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

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

如果可能,请举例说明。

4

1 回答 1

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 属性中。
于 2013-02-27T07:39:10.707 回答