Asp.net mvc 4 为什么Html.EditorFor呈现隐藏字段?

Asp.net mvc 4 为什么Html.EditorFor呈现隐藏字段?,asp.net-mvc-4,Asp.net Mvc 4,我在服务器端有一个代码: @Html.EditorFor(m => m.RememberMe) RememberMe是我的模型的一个布尔字段。 以及呈现的HTML: <input class="check-box" data-val="true" data-val-required="The Remember Me ? field is required." id="RememberMe" name="RememberMe" type="checkbox" value="true"

我在服务器端有一个代码:

@Html.EditorFor(m => m.RememberMe)
RememberMe
是我的模型的一个布尔字段。 以及呈现的HTML:

<input class="check-box" data-val="true" data-val-required="The Remember Me ? field is required." id="RememberMe" name="RememberMe" type="checkbox" value="true" />
<input name="RememberMe" type="hidden" value="false" />

有一个隐藏字段具有相同的
name=“RememberMe”
。我不知道为什么,这个隐藏的领域的目的是什么

当我选中复选框在服务器端调试时,模型映射正确。我得到:
myModel.RememberMe=true
。但是当我检查
请求[“RememberMe”]
时。我看到了
“真,假”
false
必须来自隐藏字段,因为它们具有相同的名称

我的问题是:

  • false
    是否会导致问题
  • 为什么asp.net mvc呈现这样一个隐藏字段
  • 如果不需要隐藏字段。我怎样才能摆脱它?我认为对于
    请求[“RememberMe”]
    ,最好只获取
    的“true”

谢谢

错误会导致问题吗

false不会引起任何问题,但由于渲染为NOTNULL,这意味着您的REMEMBERM设置为bool而非NULABLE bull,因此如果未选中答案,则将为false

为什么asp.net mvc呈现这样一个隐藏字段

因为如果查看html,不能有两个值,即true或false,但由于null不是答案,因此添加了隐藏字段以保存false的值
value=“false”

如果不需要隐藏字段。我怎样才能摆脱它?我认为对于
Request[“RememberMe”],最好只获取“true”。


除非您真的认为这是一个问题,否则您可能不得不编写自己的复选框帮助程序,因为据我所知,所使用的复选框帮助程序不会接受null able值作为输入。

错误会导致问题吗

false不会引起任何问题,但由于渲染为NOTNULL,这意味着您的REMEMBERM设置为bool而非NULABLE bull,因此如果未选中答案,则将为false

为什么asp.net mvc呈现这样一个隐藏字段

因为如果查看html,不能有两个值,即true或false,但由于null不是答案,因此添加了隐藏字段以保存false的值
value=“false”

如果不需要隐藏字段。我怎样才能摆脱它?我认为对于
Request[“RememberMe”],最好只获取“true”。


除非您真的认为这是一个问题,否则您可能不得不编写自己的复选框帮助程序,因为据我所知,所使用的复选框帮助程序将不接受可空值作为输入

我认为这是@bazz:谢谢链接。我想这是@bazz:谢谢链接。您的意思是隐藏字段类似于默认值?您的意思是隐藏字段类似于默认值?