如何在评估Razor标签的Razor页面中使用内联条件

时间:2019-10-27 14:18:14

标签: asp.net-core razor asp.net-core-mvc razor-pages

我的剃须刀页面中包含以下代码,并且工作正常。

<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 :(得分:0)

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 Method