在 razor 语句中输入粗体标记 (@)

Enter bold tags in razor statement (@)

我试图在以下语句中输入粗体标记,但它们无法正确呈现。

@(user.AlternateId.Count() > 1 ? id.Value  + "<b> ( </b>" + id.Key.Substring(0,3) + "<b> ) </b>"  : id.Value)

非常感谢您的帮助!

这应该有效。

@if user.AlternateId.Any())
{
    @id.Value <b>(</b> @id.Key.Substring(0,3) <b>)</b>
}
else
{
    @id.Value
}

我希望你的 id.Key 的长度总是超过 3 个字符,否则调用 SubString 会给你一个例外。如果您对此不确定,您可以考虑编写自定义 Substring 方法(一种扩展方法),该方法在尝试执行 SubString 操作之前检查字符串长度,如 this post.

中所述。

对于字符串值,Razor 会自动 HTML 编码任何 HTML。为了解决这个问题,您需要将字符串转换为 IHtmlString。最简单的方法是将 return 包装在 Html.Raw:

@Html.Raw(user.AlternateId.Count() > 1 ? id.Value  + "<b> ( </b>" + id.Key.Substring(0,3) + "<b> ) </b>"  : id.Value)

或者,您可以简单地创建一个 MvcHtmlString 的实例(实现 IHtmlString):

@(new MvcHtmlString(user.AlternateId.Count() > 1 ? id.Value  + "<b> ( </b>" + id.Key.Substring(0,3) + "<b> ) </b>"  : id.Value))

对于您的特定用例,在这里,Html.Raw 更直观,但在其他情况下(例如 HtmlHelper 扩展)知道您可以 return MvcHtmlString.

的实例