C# 为什么复选框Html帮助器呈现隐藏的输入字段?
我经常使用内置的复选框HtmlHelper,因为它允许我像这样轻松地指定元素的选中状态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
@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”
表示选中复选框,而表示未选中复选框