主要问题是
string
属性存储单个字符串,您应该使用集合属性绑定复选框,例如。
List<string>
正如前面提到的@Ajay。
因此,您应该使用以下设置:
模型
public class MyModel
{
public MyModel()
{
SelectedCategories = new List<string>();
// put categories here
Categories = new List<SelectListItem>() { ... };
}
// other properties
public List<string> SelectedCategories { get; set; }
public List<SelectListItem> Categories { get; set; }
}
@foreach (var item in Model.Categories)
{
<input type="checkbox" name="SelectedCategories" value="@item.Value" ... />
}
控制器
[HttpPost]
public ActionResult Index(MyModel model)
{
if (ModelState.IsValid)
{
// create comma-separated values
var selectedCategories = string.Join(",", model.SelectedCategories);
// Save data to database, and redirect to Success page.
return RedirectToAction("Success");
}
}
CheckBoxFor
助手,使用
SelectListItem
哪个有
Selected
财产
bool
类型,因为
支票箱
约束
布尔
财产:
模型
public class MyModel
{
public MyModel()
{
// put categories here
Categories = new List<SelectListItem>() { ... };
}
// other properties
public List<SelectListItem> Categories { get; set; }
}
看法
@for (var i = 0; i < Model.Categories.Count; i++)
{
@Html.CheckBoxFor(model => model.Categories[i].Selected)
@Html.HiddenFor(model => model.Categories[i].Text)
@Html.HiddenFor(model => model.Categories[i].Value)
}
控制器
[HttpPost]
public ActionResult Index(MyModel model)
{
if (ModelState.IsValid)
{
string selectedCategories = string.Join(",",
model.Categories.Where(x => x.Selected == true)
.Select(x => x.Text).ToList());
// Save data to database, and redirect to Success page.
return RedirectToAction("Success");
}
}
注:
有一个名为
CheckBoxListFor
List<T>
财产。
可以看到复选框列表实现的示例
here
相关问题:
Get comma-separated string from CheckboxList HTML Helper
Get Multiple Selected checkboxes in MVC