DropDownlist がデフォルトで現在の値を選択しないという厄介な問題があります。
コントローラ:
var YearsCycling = new SelectList(new List<SelectListItem>()
{
new SelectListItem(){ Value="1yr", Text="1yr"},
new SelectListItem(){ Value="1-3yrs", Text="1-3yrs"},
new SelectListItem(){ Value="3-5yrs", Text="3-5yrs"},
new SelectListItem(){ Value="5-10yrs", Text="5-10yrs"},
new SelectListItem(){ Value="10+yrs", Text="10+yrs"}
},
"Value",
"Text",
new SelectListItem() { Value = "5-10yrs", Text = "5-10yrs",
Selected = true });
ViewBag.YearsCycling = YearsCycling;
意見:
<%:Html.DropDownListFor(model=>model.YearsCycling,(SelectList)ViewBag.YearsCycling,"-select-") %>
ただし、「5-10yrs」を選択する代わりに、「-select-」オプションが表示されるだけで、DOM ソースを調べると、どの要素も選択されていません。
更新:問題が何であるかはまだわかりませんが、何か醜いことをすることで今のところ機能しています:
<%
var sl = (SelectList)ViewBag.YearsCycling;
%>
<select name="YearsCycling" id="YearsCycling">
<%foreach(var li in sl){ %>
<option value="<%:li.Value %>" <%if(li.Selected){%>selected="true"<%}%>><%:li.Text %></option>
<%} %>
</select>
これは最善の解決策ではありませんが、髪を引っ張っていたためにこの質問にたどり着いた場合は、これが役立つはずです.