ASP.NET MVC多个复选框

时间:2011-03-10 02:48:09

标签: c# asp.net-mvc

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

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

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

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

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

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

Dynamic list of checkboxes and model binding

答案 2 :(得分:0)