2011-11-02 10 views
7

チェックボックスのリストを表示する必要があります。複数のチェックボックスをチェックする必要があります。ユーザーのヒットが提出した場合MVC3複数のチェックボックスをViewModelの1つのプロパティにバインドする方法

、これらのチェックボックスの値は、私がしようとしているビューで

public class RegisterModel 
{ 
    public List<string> Roles { get; set; } 
    public List<RoleModel> SelectedRoles { get; set; }  
} 
public class RoleModel 
{ 
    public string RoleName { get; set; } 
} 

... ...これは私がこれまでに得たものであるのViewModelでのプロパティに移動する必要がありますこれを行うには...私は次のエラーを取得する

@foreach (var role in Model.Roles) 
{ 
    @Html.CheckBoxFor(m => m.SelectedRoles, role.RoleName)@role.RoleName 
} 

CS0029: Cannot implicitly convert type 'System.Collections.Generic.List<string>' to 'bool' 

誰かが私が間違ってやっているものを私に伝えることができますか?

答えて

17

シンプル:ビューの要件(一部のロールのチェックボックスのリストを表示する)に合わせてビューモデルを調整し、エディタテンプレートを使用し、ビューにループを書くのを避けます。

ので:

ビューモデル:

public class RegisterModel 
{ 
    public List<RoleModel> Roles { get; set; } 
} 

public class RoleModel 
{ 
    public string RoleName { get; set; } 
    public bool Selected { get; set; } 
} 

コントローラー:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new RegisterModel 
     { 
      Roles = new[] 
      { 
       new RoleModel { RoleName = "administrator" }, 
       new RoleModel { RoleName = "developer" }, 
       new RoleModel { RoleName = "janitor :-)" }, 
      }.ToList() 
     }; 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(RegisterModel model) 
    { 
     // at this stage the model will contain all the 
     // information you need 
     return View(model); 
    } 
} 

ビュー(~/Views/Home/Index.cshtml):

@model RegisterModel 

@using (Html.BeginForm()) 
{ 
    @Html.EditorFor(x => x.Roles) 
    <button type="submit">OK</button> 
} 

エディタのテンプレート(~/Views/Home/EditorTemplates/RoleModel.cshtml ):

@model RoleModel 

<div> 
    @Html.HiddenFor(x => x.RoleName) 
    @Html.CheckBoxFor(x => x.Selected) 
    @Html.LabelFor(x => x.Selected, Model.RoleName) 
</div> 
+0

お返事ありがとうございました! – thiag0

+0

@ thiag0、あなたは大歓迎です。 –

+0

とてもシンプルで素晴らしいです! – tsquillario

関連する問題