2013-07-03 135 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

是的,我認爲是正確的 –