填充ViewData的下拉列表

Jus*_*per 9 asp.net-mvc viewdata razor asp.net-mvc-3

我在我的控制器中有一个viewdata,它由一个列表填充:

List<employee> tempEmpList = new List<employee>();
tempEmpList = context.employees.ToList();
ViewData["tempEmpList"] = tempEmpList;
Run Code Online (Sandbox Code Playgroud)

我将此传递到我的视图中,问题是,如何将viewdata列表的内容放入下拉列表?

显示数据将.name来自列表项.

我知道我可以foreach在Viewdata上创建一个选择列表,但这看起来有点长

nem*_*esv 20

您可以使用DropDownList html帮助器:

@Html.DropDownList("SelectedEmployee", 
    new SelectList((IEnumerable) ViewData["tempEmpList"]), "Id", "Name")
Run Code Online (Sandbox Code Playgroud)

SelectList构造函数中,您可以指定Employee应将类的哪些属性用作下拉列表中的文本和值(例如"Id","Name")

"SelectedEmployee"将数据回发到服务器时,将使用dropdown()的名称.

  • 我认为您在视图中引用了`System.Collections.Generic`但是`SelectList`需要`System.Collections.IEnumerable`尝试使用显式命名空间:`new SelectList((System.Collections.IEnumerable)ViewData ["tempEmpList" ],"Id","姓名")` (2认同)

JDa*_*ips 7

ViewData以正常方式设置您,指定一个键名称,该名称映射到模型中将绑定的属性Post...

ViewData["ModelPropertyName"] = new SelectList(...)
Run Code Online (Sandbox Code Playgroud)

然后在你的视图中添加一个Html.DropDownList......

@Html.DropDownList("ModelPropertyName")
Run Code Online (Sandbox Code Playgroud)


Sap*_*ndu 5

请尝试一下。我已经尝试过 MVC5

@Html.DropDownList("SelectedEmployee", new SelectList((System.Collections.IEnumerable) ViewData["tempEmpList"],"id","Name"))