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

标签 asp.net-mvc drop-down-menu selectlist html.dropdownlistfor selectlistitem

我正在使用 DropDownListFor在 View 中呈现下拉列表。不知何故,呈现的列表没有选择 SelectListItemSelected设置为 true .

在 Controller Action 中:

var selectList = sortedEntries.Select(entry => new SelectListItem
                            {
                                Selected = entry.Value.Equals(selectedValue),
                                Text = entry.Value,
                                Value = entry.Id
                            });

return View(new DropDownListModel
            {
                ListId = id,
                SelectList = selectList,
                OptionLabel = "Click to Select"
            });

在 View 中:
<%= Html.DropDownListFor(m => m.ListId, 
    Model.SelectList, 
    Model.OptionLabel, 
    new {@class="someClass"}) %>

我尝试了以下方法:
  • 确保只有一项 Selected设置为 true .
  • 删除选项标签参数。
  • 删除 HTML 属性对象。
  • 使用 SelectListDropDownListFor :

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

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

    编辑 :

    更多信息:
  • 这个 Action 是一个子 Action ,由另一个 View 调用 HTML.RenderAction
  • 最佳答案

    DropDownListFor 将始终选择列表框的值,因此在这种情况下,它将查看 ListId 的值并选择列表中的该项目。如果在列表中未找到 ListId,则将选择第一项(或默认文本)。如果您想要一个基于所选属性进行选择的列表,请使用 DropDownList(没有 For,在这种情况下,您必须自己命名)。

    所以在你的情况下,这会起作用:

    var selectList = sortedEntries.Select(entry => new SelectListItem
    {
        Text = entry.Value,
        Value = entry.Id
    });
    
    return View(new DropDownListModel
    {
        ListId = selectedValue,
        SelectList = selectList,
        OptionLabel = "Click to Select"
    });
    

    关于asp.net-mvc - ASP.NET MVC DropDownListFor 不支持 SelectListItem.Selected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6689505/

    相关文章:

    javascript - Asp MVC如何实现页面日历

    asp.net-mvc - Windows Server 2003 和 IIS 上的 ASP.NET MVC 和 .NET 3.5 SP1

    css - 我怎样才能让下拉框与 css 类一起工作?

    c++ - Win32 C++ 从元素中获取文本

    css - 在 knockout.js 中切换 css 以更改选择列表宽度

    asp.net - 当用户在 mvc asp 身份中创建帐户时如何禁用电子邮件确认

    asp.net-mvc - asp.net mvc View 模型中的默认值

    jquery - 根据列表大小调整 Bootstrap 菜单多列的大小

    css - twitter bootstrap drop down z-index 和透明度可见性问题

    Jquery - 三个选择列表,如果选择了一个值,则停用另外两个