为什么CheckBox Html Helper呈现隐藏的输入字段?

时间:2014-10-24 15:48:50

标签: c# html asp.net-mvc razor html-helper

我经常使用内置的CheckBox HtmlHelper,因为它允许我轻松指定元素的检查状态,如下所示

@Html.CheckBox("Test",Model.IsChecked);

在视图上创建它

@if(Model.IsChecked)
{
  <input id="test" type="checkbox" checked="checked" />
}
else
{
  <input id="test" type="checkbox"  />
}

然而,在检查帮助程序生成的html时,我可以看到它呈现此html。

<input id="Test" name="Test" type="checkbox" value="true" />
<input name="Test" type="hidden" value="false" />

我无法理解为什么还有一个隐藏的字段输入,它用于什么?

1 个答案:

答案 0 :(得分:4)

浏览器提交的表单数据不包括未选中复选框的键和值。如果没有隐藏字段,服务器端代码就无法确定复选框是否存在于表单中且未选中,或者根本不存在于客户端上。

Html.CheckBox使用与input type="checkbox"的名称相同的名称创建隐藏字段,因此对于选中的复选框,提交的值为"true,false",{{1对于未选中的复选框。