我的控制器中有一个viewdata,它由一个列表填充:
List<employee> tempEmpList = new List<employee>();
tempEmpList = context.employees.ToList();
ViewData["tempEmpList"] = tempEmpList;
我将此传递到我的视图中,问题是,如何将viewdata列表的内容放入下拉列表中?
列表项中的显示数据为.name
。
我知道我可以在Viewdata上做foreach
并创建一个选择列表,但这似乎有点长篇大论
答案 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"))