2014-11-22 63 views
0

我有一個簡單的登錄表單,這我通過剃刀呈現這樣的 -剃刀產生兩個輸入標籤相同的元素

<div class="row"> 
      @Html.TextBoxFor(m => m.EMail, htmlAttributes: new { @class = "form-control", placeholder = "E-Mail" }) 
      @Html.PasswordFor(m => m.Password, htmlAttributes: new { @class = "form-control", placeholder = "Password" }) 
      @Html.CheckBoxFor(m => m.RememberMe, htmlAttributes: new {@class = "form-control", value="1", @checked = "1"}) 
      <input type="button" class="btn btn-sm btn-primary" id="signinbutton" value="Sign In" /> 
</div> 

它渲染頁面正確的,但是當我嘗試序列化,這是輸出 -

EMail=Sam&Password=sam&RememberMe=1&RememberMe=false 

RememberMe被序列化兩次以上。

當我挖成生成html,產生輸入字段的兩倍 -

<input checked="1" data-val="true" data-val-required="The RememberMe field is required." id="RememberMe" name="RememberMe" type="checkbox" value="1"> 
<input name="RememberMe" type="hidden" value="false"> 

它看起來很奇怪。我不知道爲什麼會發生這種情況。有任何想法嗎?

回答

0

這是故意的,因爲空的複選框將不會被提交爲任何內容。要提交一個錯誤的值,如果複選框沒有被選中,隱藏的輸入將被讀取。

有關更多信息,請參閱here

+0

雖然我仍然很困惑,爲什麼這必須是這樣的,我已經添加了我的自定義函數來序列化窗體。謝謝。 – Sam 2014-11-22 13:31:29

相關問題