在ASP.NET MVC Core中,当使用HTTP POST方法提交表单数据时,只会将选中的复选框的值传递给控制器的动作方法,而未选中的复选框的值将不会传递。如果希望在控制器中获取所有复选框的值,可以使用以下解决方法:
Html.CheckBoxFor
方法生成复选框,并使用Html.HiddenFor
方法生成一个隐藏的字段来表示复选框的未选中状态。这样在提交表单时,无论复选框是否选中,都会将其值传递给控制器的动作方法。public class MyViewModel
{
public bool Checkbox1 { get; set; }
public bool Checkbox2 { get; set; }
}
在视图中:
@model MyViewModel
在控制器中:
[HttpPost]
public IActionResult Submit(MyViewModel model)
{
// 获取所有复选框的值
bool checkbox1 = model.Checkbox1;
bool checkbox2 = model.Checkbox2;
// 其他处理逻辑
// ...
return View();
}
FormCollection
对象
控制器的动作方法可以接收一个FormCollection
对象,通过该对象可以获取表单中的所有键值对,包括复选框的值。[HttpPost]
public IActionResult Submit(FormCollection form)
{
// 获取所有复选框的值
bool checkbox1 = Convert.ToBoolean(form["Checkbox1"]);
bool checkbox2 = Convert.ToBoolean(form["Checkbox2"]);
// 其他处理逻辑
// ...
return View();
}
以上两种方法都可以在控制器中获取所有复选框的值,选择适合自己项目的方法进行使用。