填充ViewData的下拉列表

时间:2012-08-23 11:52:36

标签: asp.net-mvc asp.net-mvc-3 razor viewdata

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

List<employee> tempEmpList = new List<employee>();
tempEmpList = context.employees.ToList();
ViewData["tempEmpList"] = tempEmpList;

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

列表项中的显示数据为.name

我知道我可以在Viewdata上做foreach并创建一个选择列表,但这似乎有点长篇大论

3 个答案:

答案 0 :(得分:19)

您可以使用DropDownList html帮助器:

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

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

当您将数据回发到服务器时,将使用下拉列表的名称("SelectedEmployee")。

答案 1 :(得分:7)

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

ViewData["ModelPropertyName"] = new SelectList(...)

然后在您的视图中添加Html.DropDownList ...

@Html.DropDownList("ModelPropertyName")

答案 2 :(得分:3)

请尝试一下。我试过MVC5

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