Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么复选框Html帮助器呈现隐藏的输入字段?_C#_Html_Asp.net Mvc_Razor_Html Helper - Fatal编程技术网

C# 为什么复选框Html帮助器呈现隐藏的输入字段?

C# 为什么复选框Html帮助器呈现隐藏的输入字段?,c#,html,asp.net-mvc,razor,html-helper,C#,Html,Asp.net Mvc,Razor,Html Helper,我经常使用内置的复选框HtmlHelper,因为它允许我像这样轻松地指定元素的选中状态 @Html.CheckBox("Test",Model.IsChecked); 而不是像这样在视图上创建它 @if(Model.IsChecked) { <input id="test" type="checkbox" checked="checked" /> } else { <input id="test" type="checkbox" /> } @if(Model

我经常使用内置的复选框HtmlHelper,因为它允许我像这样轻松地指定元素的选中状态

@Html.CheckBox("Test",Model.IsChecked);
而不是像这样在视图上创建它

@if(Model.IsChecked)
{
  <input id="test" type="checkbox" checked="checked" />
}
else
{
  <input id="test" type="checkbox"  />
}
@if(Model.IsChecked)
{
}
其他的
{
}
但是,当检查助手生成的html时,我可以看到它呈现了这个html

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


我不明白为什么还有一个隐藏的字段输入,它是用来做什么的

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

Html.CheckBox
使用
type=“CheckBox”
创建与
输入的名称同名的隐藏字段,因此提交的值为
“true,false”
表示选中复选框,而
表示未选中复选框