Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC3.0中的复选框列表_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 3 MVC3.0中的复选框列表

Asp.net mvc 3 MVC3.0中的复选框列表,asp.net-mvc-3,Asp.net Mvc 3,如何在asp.net MVC中创建复选框列表,然后使用复选框列表处理事件您可以拥有一个视图模型: public class MyViewModel { public int Id { get; set; } public bool IsChecked { get; set; } } 控制器: public class HomeController : Controller { public ActionResult Index() { var m

如何在asp.net MVC中创建复选框列表,然后使用复选框列表处理事件

您可以拥有一个视图模型:

public class MyViewModel
{
    public int Id { get; set; }
    public bool IsChecked { get; set; }
}
控制器:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new[] 
        {
            new MyViewModel { Id = 1, IsChecked = false },
            new MyViewModel { Id = 2, IsChecked = true },
            new MyViewModel { Id = 3, IsChecked = false },
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(IEnumerable<MyViewModel> model)
    {
        // TODO: Handle the user selection here
        ...
    }
}
以及相应的编辑器模板(
~/Views/Home/EditorTemplates/MyViewModel.cshtml
):


现在,当您提交表单时,您将获得一个值列表以及每个值的值列表,无论是否选中。

还有一种更简单的方法-从这里使用自定义@Html.CheckBoxList()扩展名:

使用示例(带Razor视图引擎的MVC3视图):


太棒了,这绝对是一条路!嗨,达林·迪米特洛夫,我有个问题。我试了一下,终于成功了。我确实有一个HTML助手在为此工作。但我也想尝试这种方法。在我的例子中,复选框的标签是动态的,因此我正在寻找将它们绑定到编辑器模板的方法。你能推荐一种方法吗?非常感谢。我刚才也发了一个关于这个的问题。如果您有几分钟的时间,请参考它,对于这样一个优雅的解决方案,请选择a+1!看看这个,我试着用3.0版。上面由@mik-t提供的链接仅适用于.NET 4.0或4.5和MVC4。上面的解决方案是针对较旧版本的扩展发布的,当时它确实适用于MVC3,请从NuGet尝试此较旧版本,它应该可以工作:
@model IEnumerable<AppName.Models.MyViewModel>
@{
    ViewBag.Title = "Home Page";
}
@using (Html.BeginForm())
{
    @Html.EditorForModel()
    <input type="submit" value="OK" />
}
@model AppName.Models.MyViewModel
@Html.HiddenFor(x => x.Id)           
@Html.CheckBoxFor(x => x.IsChecked)
@Html.CheckBoxList("NAME",                  // NAME of checkbox list
                   x => x.DataList,         // data source (list of 'DataList' in this case)
                   x => x.Id,               // field from data source to be used for checkbox VALUE
                   x => x.Name,             // field from data source to be used for checkbox TEXT
                   x => x.DataListChecked   // selected data (list of selected 'DataList' in thiscase),
                                            // must be of same data type as source data or set to 'NULL'
                  )