我一直在尝试为我的布尔编辑器编写默认复选框模板,但由于 MVC Razor 如何为单个布尔模型属性呈现多个输入元素,我遇到了一个问题。
我定义了这个模板:
@model Boolean?
<div class="check-box">
@Html.CheckBox("", Model.HasValue && Model.Value)
@Html.LabelForWithoutText(m => m, new object())
</div>
如果我手动写出 HTML,例如:
<div class="check-box">
<input type="checkbox" title="Create?" value="true" name="check" id="chkCreate">
<label title="Create?" for="chkCreate"></label>
</div>
一切正常。
但是,当 Razor 在模型的布尔属性上呈现我的模板时,html 就大不相同了。由于 MVC 如何呈现其他隐藏输入以将布尔值发布回操作方法。
Razor 版本如下所示:
<div class="check-box">
<input type="checkbox" value="true" name="GloballyShare" id="GloballyShare" data-val-required="The GloballyShare field is required." data-val="true">
<input type="hidden" value="false" name="GloballyShare">
<label title="GloballyShare" for="GloballyShare"></label>
</div>
问题是额外的隐藏input
。我不想改变这种行为,因为这将全局影响默认情况下 MVC 表单的工作方式,我想不出在 CSS 中处理这个问题的方法。
所以我想知道如何实现这一点。您可以在此处查看该问题的工作示例:
如果您尝试它,则删除隐藏的输入元素并再次尝试,最顶部的复选框开始与底部复选框相同