【问题标题】:How do I bypass the HTML encoding when using Html.ActionLink in Mvc?在 Mvc 中使用 Html.ActionLink 时如何绕过 HTML 编码?
【发布时间】:2010-09-30 04:35:46
【问题描述】:

每当我使用 Html.ActionLink 时,它总是 Html 对我的显示字符串进行编码。例如,我希望我的链接看起来像这样:

<a href="/posts/422/My-Post-Title-Here">More&hellip;</a>

它的输出如下:More&hellip;

&hellip 是 "..." 以防你想知道。

但是,actionlink 输出实际文本“…”作为链接文本。如果我想输出这个,我有同样的问题:

<a href="/posts/422/My-Post-Title-Here"><em>My-Post-Title-Here</em></a>

我最终得到: <em>My-Post-Title-Here</em>

知道怎么做吗?

【问题讨论】:

    标签: asp.net-mvc html-encode


    【解决方案1】:

    看起来 ActionLink 总是在链接文本上使用调用 HttpUtility.Encode。您可以使用 UrlHelper 生成 href 并自己构建锚标记。

    <a href='@Url.Action("Posts", ...)'>More&hellip;</a>
    

    或者,您可以“解码”传递给 ActionLink 的字符串。用 HTML 构建链接似乎更具可读性(对我而言)——尤其是在 Razor 中。以下是用于比较的等价物。

    @Html.ActionLink(HttpUtility.HtmlDecode("More&hellip;"), "Posts", ...)
    

    【讨论】:

    • @tvanfosson 差不多 4 年后...这仍然是将特殊字符(如&符号、插入符号等)填充到链接文本中的最佳方法吗?
    • @one.beat.consumer 我认为是这样,但我添加了另一种选择。还更新以反映 Razor 语法。
    • Mvc Html 扩展都是垃圾,为了更强大试试 Fubu MVC 的 HtmlTags 库,然后您可以编写自己的(更好的)扩展方法返回 HtmlTags 而不是 MvcHtmlString
    • 对于 MVC5,他们将 Decode 方法重命名为 HtmlDecode @Html.ActionLink(HttpUtility.HtmlDecode("More…"), "Posts", ...)
    【解决方案2】:

    Sam 给出的答案实际上是正确的,我在我的解决方案中使用了它,因此我自己尝试了它。 您可能希望删除多余的括号,使其变为如下所示:

    @Html.ActionLink(HttpUtility.HtmlDecode("&amp;"), "Index", "Home")
    

    【讨论】:

      【解决方案3】:

      或者,只需使用普通的 Unicode 省略号字符 \u2026 并让 MVC 担心如何对其进行编码。除非有一些特别令人信服的理由,否则您特别需要一个 hellip 实体引用而不是字符引用,或者只是将字符包含为简单的 UTF-8 字节。

      另一种选择:只使用三个句点。省略号 (U+2026) 是一个兼容字符,仅包含在与 pre-Unicode 编码之间的往返行程中。与简单的点相比,它对您的帮助很小。

      【讨论】:

      • 省略号在语义上比三个句点更有意义。它通常也渲染得更好。
      【解决方案4】:

      看看这个:

        <p>Some text   @(new HtmlString(stringToPaste)) </p>
      

      【讨论】:

        【解决方案5】:

        在传递值之前对其进行解码。只是遇到了同样的问题(不同的字符),它工作正常:

        例如:

        @Html.ActionLink(HttpUtility.HtmlDecode(_("&amp;")), "Index", "Home")
        

        虽然很烦

        【讨论】:

          猜你喜欢
          • 2012-01-09
          • 2010-11-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多