Почему не может <input type = "hidden" > принимать логическое значение со стороны сервера?

Со стороны сервера я определил новое значение boolean и установил его в тег <input>, но браузер не смог его обнаружить.

@{ var isAuthor = false; }
<input type="hidden" value="@isAuthor" />

После компиляции результат: <input type="hidden"></input>

Но когда я попытался преобразовать isAuthor в string, он должен работать:

@{ var isAuthor = false; }
<input type="hidden" value="@isAuthor.ToString()" />

Результат: <input type="hidden" value="false"></input>

Почему? Я что-то пропустил?

Ответы

Ответ 1

Это механизм движка Razor, называемый условными атрибутами. Идея состоит в том, чтобы упростить сценарий, где вы хотите или не хотите отображать атрибут на основе значения. Раньше вам приходилось писать инструкцию if или использовать тернарный оператор для ее обработки, но с условными атрибутами она значительно упрощена.

С условными атрибутами, если значение атрибута null или false, тогда атрибут не отображается. Если вы хотите, чтобы значение было false, вам нужно передать его в строку, как и в вопросе.

В этой статье блога вы можете прочитать отличное введение в условные атрибуты Razor