Razor为同一元素生成两个输入标签

时间:2014-11-22 12:40:46

标签: c# jquery razor

我有一个简单的登录表单,我通过这样的Razor渲染 -

<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">
它看起来很奇怪。我不确定为什么会这样。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

这是故意的,因为空的复选框不会被提交为任何内容。要提交假值,如果未选中该复选框,则将读取隐藏的输入。

有关详情,请参阅here