Asp.net mvc 下拉问题

Asp.net mvc 下拉问题,asp.net-mvc,Asp.net Mvc,我得到了这行代码: <%=Html.DropDownList("Status",(SelectListItem[])ViewData["statusList"], new {@style = "width: 190px"})%> 下拉列表始终填充来自ViewData的数据,这很好,但我希望选择与Model.Status属性对应的值。 我做错了什么?您似乎没有将该值设置为状态。您已经将“Status”作为名称,但至少在该行中,Model.Status没有设置在任何位置。当您创建S

我得到了这行代码:

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

下拉列表始终填充来自ViewData的数据,这很好,但我希望选择与Model.Status属性对应的值。
我做错了什么?

您似乎没有将该值设置为状态。您已经将“Status”作为名称,但至少在该行中,Model.Status没有设置在任何位置。

当您创建SelectList时(这是在Model或Controller中完成的(不推荐,但也可以),而不是在视图中),您只需在构造函数中传递所选项,其余的工作将由它来完成:

ViewData["statusList"] = new SelectList(yourList, selectedItem);
然后,您不必将列表从ViewData强制转换为SelectListItem,而是转换为SelectList。这是视图中应显示的唯一一行

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

我在视图中这样做:

<%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创建得很好,但当我到达下拉行时,所有项目都已选择=false

您的
ViewData[“statusList”]
是如何填充的?ViewData[“statusList”]是一个SelectListItem对象数组,它正是下拉列表的源对象。如果您试图绑定到枚举,我有一个很好的解决方案。如果相关,我会发布它。Model.Status当然有一个值,比如说3。ViewData[“statusList”]例如是类似于{1,“aaa”}{2,“bbb”}{3,“ccc”}{4,“ddd”}的数组。然后我创建了一个下拉列表,其中填充了这4个值,但是选择了第一个,而不是value=3的下拉列表。我想说的是,在视图代码中,我不认为您告诉下拉列表要选择什么值。在我脑海中,我想你需要像下拉列表(“状态”、ViewData[“statusList”]、Model.Status)这样的东西来告诉它要选择什么值。哦,糟糕,我忘了你可以在SelectList中指定selectedItem。。你能粘贴那个代码吗?也许问题出在你的控制器上,而不是你的视图上。我从未在视图中修改过我的列表。也许更好的方法是在创建列表时选择所选项目,而不是在视图中。此线程:似乎有类似的问题。这里的“解决方案”是选择@creationYou做得不对。必须在模型中创建选择列表(或者在控制器中也可以)。我修改了我的答复,所以你应该能更好地理解。在视图中,你永远不应该放置任何特定的逻辑…我重命名了下拉列表,并且我自己做了分配,无论如何,在视图中添加逻辑是愚蠢的