假设您正在创建一个向课程添加/删除用户的屏幕。所以让我们创建一些视图模型
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 Action 中,您将填充 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。转到Views/YourControllerName 并创建一个名为“EditorTemplates”的文件夹并在那里创建一个与属性名称(UserVM.cshtml)同名的新视图
将此代码添加到您的新编辑器模板中。
@model 通道视图模型
<p>
<b>@Model.Name</b> :
@Html.CheckBoxFor(x => x.IsSelected) <br />
@Html.HiddenFor(x=>x.Id)
</p>
现在在您的主视图中,使用 EditorFor Html Helper 方法调用您的编辑器模板。
@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);
}