コースにユーザーを追加/削除する画面を作成していると仮定します。それでは、いくつかのビューモデルを作成しましょう
public class CourseVM
{
public string Name { set;get;}
public int CourseID { set;get;}
public List<UserVM> Users { set;get;}
public CourseVM()
{
Users=new List<UserVM>();
}
}
public class UserVM
{
public string Name { set;get;}
public int UserID{ set;get;}
public bool IsSelected { set;get;}
}
GET
アクションで、ViewModel の値を入力し、それをビューに送信します。
public ActionResult Add()
{
var vm = new CourseVM();
//The below code is hardcoded for demo. you may replace with DB data.
vm.Users.Add(new UseVM { Name = "Jon" , UserID=1});
vm.Users.Add(new UseVM { Name = "Scott", UserID=2 });
return View(vm);
}
それでは、EditorTemplate を作成しましょう。「 EditorTemplatesViews/YourControllerName
」というフォルダーに移動して作成し、そこにプロパティ名と同じ名前の新しいビューを作成します( )UserVM.cshtml
このコードを新しいエディター テンプレートに追加します。
@モデル ChannelViewModel
<p>
<b>@Model.Name</b> :
@Html.CheckBoxFor(x => x.IsSelected) <br />
@Html.HiddenFor(x=>x.Id)
</p>
EditorFor
メイン ビューで、 Html ヘルパー メソッドを使用してエディター テンプレートを呼び出します。
@model CourseVM
@using (Html.BeginForm())
{
<div>
@Html.EditorFor(m=>m.Users)
</div>
<input type="submit" value="Submit" />
}
フォームを投稿すると、選択したチェックボックスがプロパティの値をUsers
持つコレクションがモデルに含まれます。True
IsSelected
[HttpPost]
public ActionResult Add(CourseVM model)
{
if(ModelState.IsValid)
{
//Check for model.Users collection and Each items
// IsSelected property value.
//Save and Redirect(PRG pattern)
}
return View(model);
}