如何将选中的复选框列表传递至MVC控制器
ASP.NET 复选框绑定到模型List属性的实现方法
你已经通过asp-for标签助手实现了文本框与模型属性的绑定,要将多个复选框绑定到public List<string> PTList { get; set; }属性并在控制器中获取选中值,只需按以下步骤修改:
1. 确保模型属性初始化
为避免提交时出现空引用异常,建议在模型中初始化PTList:
public class YourModel { public List<string> PTList { get; set; } = new List<string>(); // 其他属性(如你示例中的Year) public int Year { get; set; } }
2. 修改复选框代码
将每个复选框的asp-for属性指向PTList,ASP.NET会自动处理表单提交时的选中值收集:
<div class="col-3"> <div class="form-check"> <input asp-for="PTList" class="form-check-input" type="checkbox" value="U100" /> <label asp-for="PTList" class="form-check-label">U100</label> </div> <div class="form-check"> <input asp-for="PTList" class="form-check-input" type="checkbox" value="U110" checked /> <label asp-for="PTList" class="form-check-label">U110</label> </div> <div class="form-check"> <input asp-for="PTList" class="form-check-input" type="checkbox" value="U130" /> <label asp-for="PTList" class="form-check-label">U130</label> </div> <div class="form-check"> <input asp-for="PTList" class="form-check-input" type="checkbox" value="U150" checked /> <label asp-for="PTList" class="form-check-label">U150</label> </div> </div>
asp-for="PTList"会自动为每个复选框生成唯一的id,同时让label的for属性自动对应,无需手动设置- 每个复选框的
value值就是选中后会提交到PTList中的内容
3. 控制器中获取选中值
在POST方法中直接接收模型实例,PTList属性会自动填充选中的复选框值:
[HttpPost] public IActionResult YourAction(YourModel model) { // model.PTList 即为所有选中的复选框值列表(例如未修改选中状态时,值为 ["U110", "U150"]) if (ModelState.IsValid) { // 执行你的业务逻辑 return RedirectToAction("Success"); } return View(model); }
内容的提问来源于stack exchange,提问作者martinb
相关产品推荐
相关产品推荐

