我得到了这行代码:
<%=Html.DropDownList("Status",(SelectListItem[])ViewData["statusList"], new {@style = "width: 190px"})%>
下拉列表总是使用ViewData中的数据填充,这很好,但我想选择与Model.Status属性对应的值。 我做错了什么?
答案 0 :(得分:2)
当你创建SelectList时(这是在模型或控制器中完成的(不推荐但是没关系),不在视图中)你只需要在构造函数中传递选定的项目,它就会照顾到其余:
ViewData["statusList"] = new SelectList(yourList, selectedItem);
然后,您不必将ViewData中的列表转换为SelectListItem,而是转换为SelectList。这是您应该在视图中显示的唯一一行。
<%=Html.DropDownList("Status",(SelectList)ViewData["statusList"], new {@style = "width: 190px"})%>
答案 1 :(得分:0)
您似乎没有将值设置为status。您已将“状态”作为名称,但至少在该行中,Model.Status未在任何位置设置。
答案 2 :(得分:0)
我在视图中这样做了:
<%SelectListItem[] statusVals=(SelectListItem[])ViewData["statusList"];%>
<%foreach(SelectListItem statusVal in statusVals){%>
<% if(statusVal.Value==Model.Status.ToString())
statusVal.Selected=true;%>
<%} %>
<%=Html.DropDownList("Status", statusVals, new { @style = "width: 190px" })%>
statusVals创建得很好但是当我到达下拉行时,所有项目都包含Selected = false;