Я хочу условно отобразить атрибут readonly
в <input>
. В базовом диалекте ASP.NET Razor интерпретация атрибутов немного отличается от System.Web.Mvc.
В System.Web.Mvc я делал:
<input name="Name" class="form-control" @(Model.MyCondition ? "readonly" : "") />
В ASP.NET Core то же самое не работает: ошибки нет, но атрибут также не отображается.
<input asp-for="Name" class="form-control" @(Model.MyCondition ? "readonly" : "" ) />
Когда атрибут присутствует в HTML, он принудительно применяется, поэтому я не могу что-то сделать со значением атрибута. Этот фрагмент приведет к тому, что входные данные для всегда будут доступны только для чтения:
<input asp-for="Name" class="form-control" readonly="@(Model.MyCondition ? "readonly" : "" )" />
Теперь я могу обойтись путем создания помощника по тегам, который будет реагировать на тег is-readonly
, но это выглядит очень запутанным для чего-то такого простого.
Как условно отобразить атрибут без значения, не прибегая к вспомогательному пользовательскому тегу?