Razor ViewEngine HTML.Checkbox方法创建隐藏输入.为什么?

tug*_*erk 37 checkbox asp.net-mvc razor asp.net-mvc-3

我在我的视图页面上写了以下代码;

@Html.CheckBox("ChxName",true)
Run Code Online (Sandbox Code Playgroud)

我得到了以下结果;

<input checked="checked" id="ChxName" name="ChxName" type="checkbox" value="true" />
<input name="ChxName" type="hidden" value="false" />
Run Code Online (Sandbox Code Playgroud)

为什么有一个与复选框命名相同的输入元素?

eri*_*cvg 48

未发布未选中的复选框,因此隐藏字段(设置为false)允许模型绑定仍然有效.

查看帖子背面的Request.Form.如果选中该复选框,您将看到:

ChxName=true&ChxName=false
Run Code Online (Sandbox Code Playgroud)

模型绑定器使用第一个值.

并且,如果未选中该框,您将看到:

ChxName=false
Run Code Online (Sandbox Code Playgroud)

  • 这意味着,此复选框将作为false传递给控制器​​? (2认同)
  • 不,隐藏的值将_always_为false并且_always_已发布.如果选中此框,则还会发布true,并且模型绑定器将使用true值.这是一个常见的问题,因此如果您仍然不理解或只是查看mvc源代码,您可能想稍微谷歌. (2认同)