2011-03-10 120 views
8

我有一个List约20项我想用一个复选框旁边的每个(我的ViewModel上的一个Available属性)显示给用户。ASP.NET MVC多个复选框

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

我该如何去做这个使用MVC中的Form Helper类?这甚至有可能吗?

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

回答

15

型号:

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<MyViewModel> model) 
    { 
     ... 
    } 
} 

查看~/Views/Home/Index.cshtml

@model IEnumerable<AppName.Models.MyViewModel> 
@using (Html.BeginForm()) 
{ 
    @Html.EditorForModel() 
    <input type="submit" value="OK" /> 
} 

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

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