【问题标题】:Enter bold tags in razor statement (@)在 razor 语句中输入粗体标签 (@)
【发布时间】: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


    【解决方案1】:

    这应该可行。

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

    【讨论】:

      【解决方案2】:

      对于字符串值,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 的实例会很有帮助。

      【讨论】:

        猜你喜欢
        • 2013-05-25
        • 1970-01-01
        • 2020-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-11
        相关资源
        最近更新 更多