* チェックボックスのリスト [#dc59f3ba]

チェックボックスをリストで扱う。

*** CheckBox Model [#i22ff852]
 public class UserCheckBox
 {
     public int UserId { get; set; }
     public string UserName { get; set; }
     public bool IsChecked { get; set; }
 }

*** Controller [#h0799ec5]
 public ActionResult Index(UserViewModel vm)
 {
     var userList = _userService.GetuserList().ToList();
     var userCBList = userList.Select(u => new UserCheckBox
     {
         UserId = u.UserId, UserName = u.userName, IsChecked = false
     }).ToList();
 
     var vm2 = new UserViewModel { userCBList = userCBList };
     return View(vm2);
 }

*** View [#rfc8ed66]
 @using (Html.BeginForm("Index", "Home", null, FormMethod.Get)) {
     @for (int i = 0; i < Model.UserCBList.Count; i++) {
         @Html.CheckBoxFor(m => m.UserCBList[i].IsChecked)
         @Html.DisplayFor(m => m.UserCBList[i].UserName)
     }
     <div class="form-buttons">
         <input type="submit" value="OK" />
     </div>
 }

*** 解説 [#a8cb03d8]
- 以上のコードで以下のようなHTMLのチェックボックスが出力される。
- 以上のコードで以下のようなHTMLのチェックボックスのリストが出力される。
 <input id="UserCBList_0__IsChecked" name="UserCBList[0].IsChecked" type="checkbox" value="true" />
 <input name="UserCBList[0].IsChecked" type="hidden" value="false" />太郎
 <input id="UserCBList_1__IsChecked" name="UserCBList[1].IsChecked" type="checkbox" value="true" />
 <input name="UserCBList[1].IsChecked" type="hidden" value="false" />花子
- 以前のバージョンのASP.NET MVCは、@Html.HiddenFor(m => m.UserCBList[i].UserId) が必要だったようだけど?今は不要?

** 参考 [#da39e1c4]
- http://stackoverflow.com/questions/16688170/asp-net-mvc-html-checkboxfor
- http://codepaste.net/tuxzx2
- http://stackoverflow.com/questions/6781730/checkboxfor-not-binding-with-nested-objects/6781939#6781939

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