* ドロップダウンリストのリスト [#o3d298b6]
** 前提 [#ie6a50fb]
- この問題はドロップダウンリストのリストを作る時に起きる。例えばユーザ1/ユーザ2/ユーザ3がいて、それぞれのチームをドロップダウンリストから選ぶ場合等。
- ユーザ1しかいなければドロップダウンリストは1つだけなので、この問題は起きない。
** 説明 [#r2844874]
以下のようにドロップダウンリストのリストを作る場合、このままではドロップダウンリストがフィルされない。
<ul>
@for (var i = 0; i < 3; i++)
{
<li>@Html.DropDownListFor(model => Model.users[i].TeamId, ViewBag.TeamSelectList)</li>
}
</ul>
これを解決するには、コントローラー等で以下のようにドロップダウンリスト毎にフィルすべき値を指定して(ここではuserList[i].TeamId)、SelectListのリストを作り、
for (var i = 0; i < 3; i++) {
TeamSelectList[i] = new SelectList(teamList, "TeamId", "TeamName", userList[i].TeamId);
}
以下のようにビューでSelectListを指定する必要がある。
<ul>
@for (var i = 0; i < 3; i++)
{
<li>@Html.DropDownListFor(model => Model.users[i].TeamId, TeamSelectListp[i])</li>
<li>@Html.DropDownListFor(model => Model.users[i].TeamId, TeamSelectList[i])</li>
}
</ul>
SelectListのリストを作るのが煩雑な場合は、以下のようにビューの中でnew SelectListを作っても良い。
<ul>
@for (var i = 0; i < 3; i++)
{
<li>
@Html.DropDownListFor(model => Model.users[i].TeamId,
new SelectList(ViewBag.TeamList, "TeamId", "TeamName", Model.users[i].TeamId)
</li>
}
</ul>
** 参考 [#dd725241]
http://stackoverflow.com/questions/16799476/mvc-dropdownlistfor-not-selecting-value-from-model/16799915#16799915