【发布时间】:2016-06-04 02:03:27
【问题描述】:
我正在尝试在以下语句中输入粗体标签,但它们未正确呈现。
@(user.AlternateId.Count() > 1 ? id.Value + "<b> ( </b>" + id.Key.Substring(0,3) + "<b> ) </b>" : id.Value)
非常感谢您的帮助!
【问题讨论】:
标签: asp.net-mvc html razor views
我正在尝试在以下语句中输入粗体标签,但它们未正确呈现。
@(user.AlternateId.Count() > 1 ? id.Value + "<b> ( </b>" + id.Key.Substring(0,3) + "<b> ) </b>" : id.Value)
非常感谢您的帮助!
【问题讨论】:
标签: asp.net-mvc html razor views
这应该可行。
@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。最简单的方法是将返回值包装在 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 扩展),知道您可以只返回MvcHtmlString 的实例会很有帮助。
【讨论】: