我用它来填充 ASP.NET MVC 视图中的下拉列表。
<%= Html.DropDownListFor(model => model.Bikes,
Model.Bikes.Select(
x => new SelectListItem {
Text = x.Name,
Value = Url.Action("Details", "Bike", new { bikeId = x.ID }),
Selected = x.ID == Model.ID,
})) %>
调试这个我可以看到Selected
属性设置为true
当它应该是的时候。但是当渲染视图时,列表中的任何选项都不会被选择。我意识到这可以通过另一个重载来完成DropDownListFor
但我真的想让这个版本正常工作。
有任何想法吗?
您选择的值不起作用的原因是您使用 URL 作为选项值,但指定Model.ID
in the Selected
条款。
尝试这样:
<%= Html.DropDownListFor(
model => model.Bikes,
new SelectList(Model.Bikes, "Id", "Name", Model.ID)
)%>
"Id"
指示将用作选项值的属性"Name"
指示将用作选项标签的属性。
如果你想保留Url.Action
你可以尝试:
<%= Html.DropDownListFor(
model => model.Bikes,
new SelectList(Model.Bikes.Select(x => new {
Id = x.Id,
Name = Url.Action("Details", "Bike", new { bikeId = x.ID })
}), "Id", "Name", Model.ID)
)%>
您会注意到,我颠倒了名称和 Id,因为使用模型 Id 作为选项值似乎更合乎逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)