asp.net-core - 如何在评估 Razor 标签的 Razor 页面中使用内联条件
问题描述
我的剃须刀页面中有以下代码,它工作正常。
<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\" />"))
解决方案
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" />
我建议你的第一个版本会更好。
推荐阅读
- node.js - 安装了最新的 node-sass 但项目不断尝试安装 node-sass 4.9.0
- godot - 我在 Youtube 上的一个视频的帮助下制作了一个 Godot 平台游戏我做了和他一样的一切,但我的角色拒绝向左移动
- python-3.x - 如何在 python 中计算 2、2D kde 图之间的公共体积/交集?
- javascript - 用户登录后如何打开侧边栏选项卡
- macos - cmake:如何在 macOS 上的应用程序包中找到二进制文件?
- django - Pinax npm 安装失败
- c# - C#:无法从 JSON 字符串中获取子值
- python - Odoo划分两个浮点字段 - AttributeError
- java - 在 Windows 上使用 JPackage 是否可以让 main .exe 不作为控制台运行,但让其他 laucher 作为控制台运行?
- c# - 以编程方式获取 Azure 应用服务本地磁盘使用情况