2014-11-22 61 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

相关问题