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>
}