Używam DropDownListFor
do renderowania listy rozwijanej w widoku. W jakiś sposób wyświetlana lista nie wybiera wartości SelectListItem
z Selected
ustawionej na true
.ASP.NET MVC DropDownListFor nie honoruje SelectListItem.Selected
W akcji kontrolera:
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"
});
W widoku:
<%= Html.DropDownListFor(m => m.ListId,
Model.SelectList,
Model.OptionLabel,
new {@class="someClass"}) %>
Próbowałem następujące:
- upewnij się, że jest jeden i tylko jeden elementów z
Selected
ustawiona natrue
. - usuń argument etykiety opcji.
- usunąć obiekt atrybutu HTML.
- użycie
SelectList
wDropDownListFor
:
Html.DropDownListFor(m => m.ListId,
new SelectList(Model.SelectList, "Value", "Text",
new List<SelectListItem>(Model.SelectList).Find(s => s.Selected)),
new {@class="someClass"})
Wszelkie sugestie co do tego, co poszło nie tak?
EDIT:
więcej informacji:
- Działanie to jest działanie dziecko, zwany przez innego widoku z
HTML.RenderAction
ModelState.Remove ("ListId") jest kluczem. Dziękuję Ci. –