Asp.net-Mvc
ASP.NET MVC DropDownListFor 不支持 SelectListItem.Selected
我正在使用
DropDownListFor在視圖中呈現下拉列表。不知何故,呈現的列表沒有選擇SelectListItemwithSelectedset totrue。在控制器動作中:
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設置為true。- 刪除選項標籤參數。
- 刪除 HTML 屬性對象。
- 用於:
SelectList_DropDownListForHtml.DropDownListFor(m => m.ListId, new SelectList(Model.SelectList, "Value", "Text", new List<SelectListItem>(Model.SelectList).Find(s => s.Selected)), new {@class="someClass"})關於出了什麼問題的任何建議?
編輯:
更多資訊:
- 這個動作是一個子動作,由另一個視圖呼叫
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" });
我在同一個模型上遇到了同樣的問題(決定中的其他模型沒問題)
不工作:
@Html.DropDownListFor(o => o.Drivers.ValueListItems.Value, Model.Drivers.ValueListItems, new { size = Model.Drivers.ValueSizeList, Multiple = "multiple" })完美執行,選擇的元素:
@Html.DropDownListFor(o => o.Drivers.ValueListItems.ToDictionary(u=>u.Value).Values, Model.Drivers.ValueListItems, new { size = Model.Drivers.ValueSizeList, Multiple = "multiple" })