MVC4: булевы атрибуты HTML5 отображаются со значением True/False

Я пытаюсь сделать радио-кнопку с некоторыми логическими атрибутами (обязательными и отключенными), используя:

@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)?

1 ответ

Решение

Решение было довольно странным. Выполняя некоторые тесты, я поместил @if в тег ввода HTML. Это если был использован, чтобы показать required приписывать. После этого @if я поставил disabled="@Model.BooleanValue" приписывать.

Похоже, что этот порядок нарушил ожидаемое поведение. Размещение disabled атрибут, прежде чем @if решил проблему (позже я удалил @if и преобразовал его в required="@(!Model.BooleanValue)").

Теперь рабочий код:

<input type="radio" name="radio-name" id="radio-name-no" value="false" class="radio" required="@(!Model.BooleanValue)" disabled="@Model.BooleanValue" />
Другие вопросы по тегам