2013-07-03 85 views
1

我有服务器端代码:为什么Html.EditorFor呈现隐藏字段?

@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。但是当我检查了Request["RememberMe"]。我看到了"true,false"false必须来自隐藏字段,因为它们具有相同的名称。

我的问题是:

    请问
  • false导致问题?
  • 为什么asp.net mvc呈现这样的隐藏字段?
  • 如果隐藏字段不是必需的。我怎样才能摆脱它?我认为最好只为Request["RememberMe"]获得"true"

谢谢

+1

我认为这是回答[这里](http://stackoverflow.com/questions/11011300/asp-net-mvc-3-checkboxfor-method-outputs-hidden-field-that - 隐藏字段值) – bazz

+0

@bazz:感谢您的链接。 –

回答

1

请问假性因果问题?

虚假的,不会造成任何问题,但既然你不渲染空,这意味着你的了rememberMe设置为bool,而不是nulabble牛市因此如果答案是不检查的话将是错误的

为什么asp.net的MVC呈现这样的隐藏字段?

,因为如果你看一下你的HTML你不能有两个值是true或false,但由于空不加入的答案隐藏字段来保存假value="false"

值如果隐藏字段不是neccesary。我怎样才能摆脱它?我认为最好只得到“真”Request["RememberMe"].

除非你真的认为它是一个问题,你可能不得不写你自己的复选框助手,因为据我所知,复选框助手,使用将不会接受无效值作为输入

+0

你的意思是隐藏的领域就像一个默认值? –

+0

是的,我认为是正确的 –