我在用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"}) %>
我已经尝试过以下方法:
- 确保只有一件物品带有
Selected
set to true
.
- 删除选项标签参数。
- 删除 HTML 属性对象。
- 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(使用前将#替换为@)