ドロップダウンリストのリスト

前提

  • この問題はドロップダウンリストのリストを作る時に起きる。例えばユーザ1/ユーザ2/ユーザ3がいて、それぞれのチームをドロップダウンリストから選ぶ場合等。
  • ユーザ1しかいなければドロップダウンリストは1つだけなので、この問題は起きない。

説明

以下のようにドロップダウンリストのリストを作る場合、このままではドロップダウンリストがフィルされない。

 <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, 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>

参考

http://stackoverflow.com/questions/16799476/mvc-dropdownlistfor-not-selecting-value-from-model/16799915#16799915


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2014-03-07 (金) 09:45:53