asp.net-mvc – ASP.NET MVC DropDownListFor不支持SelectListItem.Selected

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – ASP.NET MVC DropDownListFor不支持SelectListItem.Selected前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用DropDownListFor在视图中呈现下拉列表.某种程度上,渲染列表不会选择SelectListItem,其中Selected设置为true.

在控制器动作中:

  1. var selectList = sortedEntries.Select(entry => new SelectListItem
  2. {
  3. Selected = entry.Value.Equals(selectedValue),Text = entry.Value,Value = entry.Id
  4. });
  5.  
  6. return View(new DropDownListModel
  7. {
  8. ListId = id,SelectList = selectList,OptionLabel = "Click to Select"
  9. });@H_502_5@
  10. 在视图中:

  11. <%= Html.DropDownListFor(m => m.ListId,Model.SelectList,Model.OptionLabel,new {@class="someClass"}) %>@H_502_5@ 
  12.  

    我尝试过以下方法

  13.  

    >确保只有一个项目,其中Selected设置为true.
    >删除选项标签参数.
    >删除HTML属性对象.
    >在DropDownListFor中使用SelectList

  14.  
    Html.DropDownListFor(m => m.ListId,new SelectList(Model.SelectList,"Value","Text",new List<SelectListItem>(Model.SelectList).Find(s => s.Selected)),new {@class="someClass"})@H_502_5@ 
  15.  

    对于出了什么问题的任何建议?

  16.  

    编辑:

  17.  

    更多信息:

  18.  

    >此操作是一个子操作,由另一个使用HTML.RenderAction的视图调用

解决方法

试试这样:
  1. var selectList = sortedEntries.Select(entry => new SelectListItem
  2. {
  3. Text = entry.Value,Value = entry.Id
  4. });
  5.  
  6. return View(new DropDownListModel
  7. {
  8. // The drop down list is bound to ListId so simply set its value
  9. // to some element value in the list and it will get automatically
  10. // preselected
  11. ListId = selectedValue,OptionLabel = "Click to Select"
  12. });@H_502_5@
  13. 并在视图中:

  14. <%= Html.DropDownListFor(
  15.     m => m.ListId,"Text"),new { @class = "someClass" }
  16. ) %>@H_502_5@ 
  17.  

    可能还有一个问题:您正在尝试更改POST操作中的选定值.例如,您呈现了一个表单,用户在下拉列表中选择了一些值,提交了表单,并在POST操作中对此选定值进行了一些处理,当您重新显示视图时,您希望下拉列表中选择了其他值.在这种情况下,您将不得不删除ModelState中包含的初始选择,否则Html帮助程序将忽略模型中的选定值:

  18.   
  19.  
    // do this before returning the view and only if your scenario
  20. // corresponds to what I described above
  21. ModelState.Remove("ListId");@H_502_5@

猜你在找的asp.Net相关文章