ASP.NET Core Razor: условный атрибут без значения - PullRequest
1 голос
/ 24 апреля 2019

Я хочу условно отобразить атрибут 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, но это выглядит очень запутанным для чего-то такого простого.

Как условно отобразить атрибут без значения, не прибегая к вспомогательному пользовательскому тегу?

1 Ответ

0 голосов
/ 24 апреля 2019

Если вы установите значение null, когда ваше условие не соответствует (вместо пустой строки), то атрибут не будет отображаться, как показано ниже:

<input asp-for="Name" class="form-control" readonly="@(Model.MyCondition ? "readonly" : null )" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...