Подтвердить что ты не робот

ASP.NET MVC 5 отображает разное значение bool для скрытого ввода

Учитывая следующую модель просмотра:

public class FooViewModel
{
    public bool IsBoolValue { get; set; }
}

и это представление:

<input type="hidden" id="Whatever" data-something="@Model.IsBoolValue" value="@Model.IsBoolValue" />

Выход скрытого поля ввода:

<input type="hidden" id="Whatever" data-something="True" value="value">

Почему атрибут value не установлен на True, но атрибут data-something есть?

Есть ли изменения в MVC 5, которые могут вызвать это, поскольку в моих приложениях MVC 4 эта проблема не возникает.

4b9b3361

Ответ 1

Думаю, я это понял.

Я считаю, что Razor viewengine придерживается HTML 5 способа установки логических атрибутов, как описано здесь:

Что это означает в HTML 5, когда атрибут является логическим атрибутом?

В HTML 5 атрибут bool устанавливается следующим образом:

<input readonly />

или

<input readonly="readonly" />

Таким образом, Razor viewengine принимает ваше значение модели bool и будет отображать (в моем случае) атрибут value, если Model.IsBoolValue - true. В противном случае, если он false, то атрибут value вообще не отображается.

EDIT:

Как упоминал Забавский в комментариях, чтобы заставить значение True или False появиться в value attrbiute, простое использование ToString():

<input type="hidden" value="@Model.BoolProperty.ToString()" />