可能重复:
asp.net mvc: why is Html.CheckBox generating an additional hidden input
我在asp.net mvc app中渲染一个复选框,控件也输出一个隐藏字段,如下所示:
<input id="blah-64" name="blah-64" value="true" type="checkbox">
<input name="blah-64" value="false" type="hidden">
问题是,当我发布表单时,表单键“blah-64返回”,关闭“。
为什么会这样?
答案 0 :(得分:8)
如果您查看Checkbox助手的源代码,您会看到一条解释它的注释。它看起来像这样:
if (inputType == InputType.CheckBox) {
// Render an additional <input type="hidden".../> for checkboxes. This
// addresses scenarios where unchecked checkboxes are not sent in the request.
// Sending a hidden input makes it possible to know that the checkbox was present
// on the page when the request was submitted.
...
这是因为W3C specification表示,“提交表单时,只有”复选框控件才能成功。“ (成功作为提交价值的期限)。隐藏字段确保提交它们,无论它们是否被检查。如果您不想要这种行为,那么最简单的方法是自己呈现HTML而不使用帮助器。