@Html.CheckBox("orderNumbers", new { value = 1 })
@Html.CheckBox("orderNumbers", new { value = 2 })
@Html.CheckBox("orderNumbers", new { value = 3 })
@Html.CheckBox("orderNumbers", new { value = 4 })
@Html.CheckBox("orderNumbers", new { value = 5 })
[HttpPost]
public ActionResult MarkAsCompleted(IEnumerable<int> orderNumbers) { }
[HttpPost]
public ActionResult MarkAsCompleted(IEnumerable<string> orderNumbers) { }
如果在操作方法中使用第一个签名,则会得到一个空的
IEnumerable
。如果我使用第二个签名,则确实会收到值,但是对于未选定的值,我也会收到错误的值(因为MVC的模式是用隐藏字段遮盖所有复选框)。
例如我会收到类似
orderNumbers = { "1", "2", "false", "4", "false" }
的信息为什么我不能只获取数字列表?
最佳答案
因为这就是所提供的CheckBoxFor
助手的工作方式。
您必须自己为复选框生成html。这样就不会生成隐藏的输入,您将仅获得所选的整数值。