我的剃须刀页面中包含以下代码,并且工作正常。
<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\" />"))
答案 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" />
我建议您的第一个版本会更好。