Asp.net mvc 4 在MVC控制器中获取多个复选框值

Asp.net mvc 4 在MVC控制器中获取多个复选框值,asp.net-mvc-4,Asp.net Mvc 4,我的代码如下: 在第页,我有一个带有复选框、代码和产品名称的产品列表。 当选择多个复选框时,单击“提交”,我需要获取所选复选框的值并将其保存在数据库中 产品视图模型类: public class ProductVM { public ProductVM() { this.ProductsList = new List<Product>(); } public List<Product> ProductsList { get; set;

我的代码如下:

在第页,我有一个带有复选框、代码和产品名称的产品列表。 当选择多个复选框时,单击“提交”,我需要获取所选复选框的值并将其保存在数据库中

产品视图模型类:

public class ProductVM
{
 public ProductVM()
    {
        this.ProductsList = new List<Product>();
    }

public List<Product> ProductsList { get; set; }

public class Product
{
    public bool IsSelected { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
}

}
产品视图:

@model ProductVM
@using(Html.BeginForm())
{
   foreach (var item in Model.ProductsList)
   {
        @Html.CheckBox("IsSelected", item.IsSelected) 
        @Html.Label(item.Code)
        @Html.Label(item.Name)
   }
   <input type="submit" />
 }
@model-ProductVM
@使用(Html.BeginForm())
{
foreach(Model.ProductsList中的var项)
{
@复选框(“IsSelected”,item.IsSelected)
@Html.Label(item.Code)
@Html.Label(item.Name)
}
}

首先,您需要使用
for
而不是
foreach
。否则Razor将不会生成正确的字段名。其次,您需要
code
Name
属性的隐藏输入,以便将这些属性发回:

for (var i = 0; i < Model.ProductsList.Count(); i++)
{
    @Html.HiddenFor(m => m.ProductsList[i].Code)
    @Html.HiddenFor(m => m.ProductsList[i].Name)
    <label>
        @Html.CheckBoxFor(m => m.ProductsList[i].IsSelected)
        @Html.DisplayFor(m => m.ProductsList[i].Code)
        @Html.DisplayFor(m => m.ProductsList[i].Name)
    </label>
}
for(var i=0;im.ProductsList[i].Code)
@Html.HiddenFor(m=>m.ProductsList[i].Name)
@Html.CheckBoxFor(m=>m.ProductsList[i].IsSelected)
@DisplayFor(m=>m.ProductsList[i].Code)
@DisplayFor(m=>m.ProductsList[i].Name)
}

从我的评论到问题演示我的代码-您可以从中获得想法

@foreach (var item in ViewBag.FocusesList)
{
    <label>
        <input type="checkbox" value="@item.ConfigurationId" name="FocusList" id="FocusList" /> @item.Value.Name
    </label>
}
@foreach(ViewBag.FocusesList中的变量项)
{
@item.Value.Name
}

提交后,您在请求[“FocusList”]中将所有选中值按逗号分割。

为您的复选框创建相同的名称,并将ID放入值属性中-然后在提交时,您将获得逗号分隔的值。我如何在模型本身中获得它?不使用表单集合。
@foreach (var item in ViewBag.FocusesList)
{
    <label>
        <input type="checkbox" value="@item.ConfigurationId" name="FocusList" id="FocusList" /> @item.Value.Name
    </label>
}