ASP.NET MVC DropDownListFor 不支持 SelectListItem.Selected

2024-01-03

我在用DropDownListFor在视图中呈现下拉列表。不知怎的,渲染的列表没有选择SelectListItem with Selected set to true.

在控制器动作中:

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"
            });

视图中:

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

我已经尝试过以下方法:

  1. 确保只有一件物品带有Selected set to true.
  2. 删除选项标签参数。
  3. 删除 HTML 属性对象。
  4. use SelectList in DropDownListFor:

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

关于出了什么问题有什么建议吗?

EDIT:

更多信息:

  • 此操作是一个子操作,由另一个视图调用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"
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ASP.NET MVC DropDownListFor 不支持 SelectListItem.Selected 的相关文章

随机推荐