ASP.NET Core中如何提交复选框的value值而非布尔值?
解决方案
要实现勾选复选框时提交对应的value值,只需完成两个关键修改:
1. 给复选框添加统一的name属性
原代码中的复选框缺少name属性,浏览器不会提交未命名的表单控件。给所有复选框设置相同的name(比如SelectedItems),勾选的多个值会以集合形式提交到后端。
修改后的视图代码:
<form asp-controller="X" asp-action="Y"> @for (int i = 0; i < Model.SomeListOfStrings.Count; i++) { <input type="checkbox" name="SelectedItems" value="@Model.SomeListOfStrings[i]" /> <!-- 可选:添加标签显示文本,方便用户识别选项 --> <label>@Model.SomeListOfStrings[i]</label> } <input type="submit" /> </form>
2. 后端Action接收集合参数
在XController的Y方法中,定义一个与name属性同名的集合参数,ASP.NET Core的模型绑定会自动将提交的勾选值绑定到该参数:
public IActionResult Y(List<string> SelectedItems) { // SelectedItems即为所有被勾选的复选框value值的集合 // 编写你的业务处理逻辑 return View(); }
补充说明
- 未勾选的复选框不会被浏览器提交,因此后端参数只会包含被勾选的
value值,完全符合需求。 - 如果使用强类型模型,也可以结合
asp-for标签助手实现,但直接设置统一name的方式对字符串列表场景更简洁。
内容的提问来源于stack exchange,提问作者Szyszka947
相关产品推荐
相关产品推荐

