Я пытаюсь отобразить радиокнопку с некоторыми логическими атрибутами (обязательными и отключенными), используя:
@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
)?
disabled="@Model.BooleanValue"
, но что вы хотите здесь делать.disabled="true"
иdisabled="false"
(илиdisabled="disabled"
, или простоdisabled
) все идентичны - наличие атрибута определяет, отключен он или нет. Вам нужно условно добавить атрибут. - person   schedule 15.11.2017disabled
(илиdisabled=disabled
) вместоdisabled="True"
и вообще не отображать его, если свойство модели имеет значение false или null. Похоже, в моем случае он выполняет ToString() и напрямую присваивает логическое значение атрибуту. - person user1527576   schedule 15.11.2017htmlAttributes
с использованиемnew { ... }
(тогда условные атрибуты не применяются). И второй случай работает и будет генерироватьdisabled="disabled" if the property is
true` и опускать его, еслиfalse
- я могу только предположить, что вы не используете Razor2 - person   schedule 15.11.2017checked="True"
, но вы не добавили этот атрибут, поэтому он не мог быть добавлен на основе вашего кода. - person   schedule 15.11.2017class=Model.BooleanValue
и работает, как и ожидалось (скрытие атрибутаclass
при значенииfalse
) - person user1527576   schedule 15.11.2017