我正在尝试在以下语句中输入粗体标记,但它们无法正确呈现。
@(user.AlternateId.Count() > 1 ? id.Value + "<b> ( </b>" + id.Key.Substring(0,3) + "<b> ) </b>" : id.Value)
非常感谢帮助!
答案 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}}。