Как использовать встроенное условие в Razor Pages, которое оценивает теги Razor - PullRequest
0 голосов
/ 27 октября 2019

У меня есть следующий код на моей странице бритвы, и он отлично работает.

<dd class="col-sm-6">
@if (Model.Status.Equals("inactive", StringComparison.OrdinalIgnoreCase))
{
    @Html.DisplayFor(model => model.ContactName)
}
else
{
    <input asp-for="Model.ContactName" class="form-control" /><span asp-validation-for="Model.ContactName" class="text-danger"/>
}

Я хочу преобразовать это во встроенное состояние. Как я могу это сделать? Я пробовал следующее, но он не оценивает бритвенные метки.

<dd class="col-sm-6">
@(Model.Status.Equals("inactive", StringComparison.OrdinalIgnoreCase)?Html.DisplayFor(model => model.ContactName):Html.Raw(value: $"<input asp-for=\"{Model.ContactName}\" class=\"form-control\" /><span asp-validation-for=\"{Model.ContactName}\" class=\"text-danger\" />"))

1 Ответ

0 голосов
/ 28 октября 2019

Html.Raw используется для возврата разметки, которая не закодирована в формате HTML. Так что он не может оценить тег asp-for. Вы можете изменить только, как показано ниже, затем вы можете оценить asp-for. Также он не может оценить asp-validation-for:

@(Model.Status.Equals("inactive", StringComparison.OrdinalIgnoreCase) ? Html.DisplayFor(model => model.ContactName) : Html.EditorFor(model => model.ContactName))
<span asp-validation-for="Model.ContactName" class="text-danger" />

Я полагаю, что ваша первая версия будет лучше.

Ссылка: Метод HtmlHelper.Raw

...