ASP.NET MVC多个复选框

我有一个大约20个项目的List ,我想向用户显示每个项目旁边的复选框(我的ViewModel上的Available属性)。

提交表单时,我希望能够通过ViewModel上的Selections属性将每个复选框的值传递回我的控制器方法。

我将如何使用MVC中的Form Helper类进行此操作? 这有可能吗?

PS:我不想要一个列表框,用户可以只突出显示多个项目。

模型:

 public class MyViewModel { public int Id { get; set; } public bool Available { get; set; } } 

控制器:

 public class HomeController: Controller { public ActionResult Index() { var model = Enumerable.Range(1, 20).Select(x => new MyViewModel { Id = x }); return View(model); } [HttpPost] public ActionResult Index(IEnumerable model) { ... } } 

查看~/Views/Home/Index.cshtml

 @model IEnumerable @using (Html.BeginForm()) { @Html.EditorForModel()  } 

编辑模板~/Views/Home/EditorTemplates/MyViewModel.cshtml

 @model AppName.Models.MyViewModel @Html.HiddenFor(x => x.Id) @Html.CheckBoxFor(x => x.Available) 

最好的办法是创建一个可以重用的模板。 我家里有一些代码可以在今晚晚些时候发布。

也许在同一时间检查SO的类似post。

复选框和模型绑定的动态列表