Razor 为同一元素生成两个输入标签
本文关键字:两个 标签 输入 元素 Razor | 更新日期: 2023-09-27 18:31:26
我有一个简单的登录表单,我通过 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">
看起来很奇怪。我不确定为什么会发生这种情况。有什么想法吗?
这是有意为之的,因为空复选框不会作为任何内容提交。要提交假值,如果未选中该复选框,则将读取隐藏的输入。
请参阅此处了解更多信息。