我是 MVC 的新手,所以可能很困惑。有人可以解释一下razor中的下拉菜单吗?我的问题是-
- dropdownlist 和 dropdownlistfor 有什么区别
- 我如何将我的数据库表的 ID 列作为值传递,将 NAME 列作为文本传递。
- 如何将“其他”添加到下拉列表中。
- 我如何在后面的代码中访问 selectedlistitem。
如果可能,请举例说明。
我是 MVC 的新手,所以可能很困惑。有人可以解释一下razor中的下拉菜单吗?我的问题是-
如果可能,请举例说明。
DropDownList 由如下代码生成:
@Html.DropDownList("PersonId", new SelectList(Model.People, "Id", "Text");
另一方面, DropDownListFor 是这样生成的:
@Html.DropDownListFor(m => m.PersonId, new SelectList(Model.People, "Id", "Text")
DropDownList 的问题在于它有一个魔术字符串,如果您决定稍后重构模型,那么您也会忘记更改魔术字符串。您可以像这样执行 LINQ 查询:
var datalist = New SelectList(from x in _peopleService
select new SelectListItem { Text = x.Name, Value = x.Id});
如果您之间没有服务或 ORM,则需要将其应用于您的情况,但您可以生成这样的列表。在 nr 2 之后,您可以
datalist.Add(new SelectListItem() { Text = "Other", Value = "-1"});
此外,您必须将该数据列表放入传递给视图的视图模型/模型中,以便您可以使用它生成一个选择列表项。在这种情况下,您可以这样做:
@Html.DropDownListFor(x => x.PersonId, Model.PersonList);
如果您将列表存储为模型中的 PersonList。