下拉问题

时间:2010-01-04 14:23:16

标签: asp.net-mvc

我得到了这行代码:

<%=Html.DropDownList("Status",(SelectListItem[])ViewData["statusList"], new {@style = "width: 190px"})%>

下拉列表总是使用ViewData中的数据填充,这很好,但我想选择与Model.Status属性对应的值。 我做错了什么?

3 个答案:

答案 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;