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

时间:2016-02-22 15:11:25

标签: html asp.net-mvc html5 razor views

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

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

非常感谢帮助!

2 个答案:

答案 0 :(得分:2)

这应该有用。

@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中所述。

答案 1 :(得分:0)

对于字符串值,Razor会自动对任何HTML进行HTML编码。要解决此问题,您需要将字符串转换为IHtmlString。最简单的方法是将返回值包装在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扩展名)中,知道您只能返回{{{{}}的实例会很有帮助1}}。