我尝试使用以下方法渲染带有一些布尔属性(必需和禁用)的单选按钮:
@Html.RadioButton("radio-name","false", new { id="test", required=Model.BooleanValue})
和
<input type="radio" name="radio-name" id="radio-name-no" value="false" class="radio" @if (!Model.BooleanValue) { <text>required</text> } disabled="@Model.BooleanValue" />
但输出是这样的:
<input id="test" name="radio-name" required="False" value="false" type="radio">
和
<input name="radio-name" id="radio-name-no" value="false" class="radio" disabled="True" type="radio">
MVC4应该根据HTML5规范呈现布尔属性,那么为什么它输出disabled="True"
(或False
)而不是disabled="disabled"
或disabled
(或者如果BooleanValue
属性为false
),则什么都没有?
答案 0 :(得分:1)
解决方案很奇怪。在做一些测试时,我在HTML输入标签中放了一个@if。此if用于显示required
属性。在这个@if之后,我放了disabled="@Model.BooleanValue"
属性。
这个订单似乎打乱了预期的行为。在@if之前放置disabled
属性解决了问题(后来我删除了@if并将其转换为required="@(!Model.BooleanValue)"
)。
现在工作代码是:
<input type="radio" name="radio-name" id="radio-name-no" value="false" class="radio" required="@(!Model.BooleanValue)" disabled="@Model.BooleanValue" />