在Mvc中使用Html.ActionLink时,如何绕过HTML编码?

每当我使用Html.ActionLink它总是Html编码我的显示string。 比如我想让我的链接看起来像这样:

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

它的输出是这样的: 更多&hellip;

&hellip是“…”,如果你想知道。

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

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

我结束了: <em> My-Post-Title-Here </ em>

任何想法如何做到这一点?

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

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

或者,您可以“解码”您传递给ActionLink的string。 在HTML中构build链接似乎稍微可读(对我来说) – 特别是在Razor中。 以下是等同的比较。

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

Sam给出的答案实际上是正确的,我在解决scheme中使用它,所以我自己也尝试过。 你可能想删除额外的括号,所以它变成这样的:

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

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

备选scheme:只使用三个阶段。 省略号(U + 2026)是一个兼容性字符,仅包含在前Unicode编码的往返行程中。 与简单的点相比,它让你很less。

看看这个:

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

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

例如:

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

虽然烦人