在Mvc中使用Html.ActionLink时,如何绕过HTML编码?
每当我使用Html.ActionLink它总是Html编码我的显示string。 比如我想让我的链接看起来像这样:
<a href="/posts/422/My-Post-Title-Here">More…</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…</a>
或者,您可以“解码”您传递给ActionLink的string。 在HTML中构build链接似乎稍微可读(对我来说) – 特别是在Razor中。 以下是等同的比较。
@Html.ActionLink(HttpUtility.HtmlDecode("More…"), "Posts", ...)
Sam给出的答案实际上是正确的,我在解决scheme中使用它,所以我自己也尝试过。 你可能想删除额外的括号,所以它变成这样的:
@Html.ActionLink(HttpUtility.HtmlDecode("&"), "Index", "Home")
或者,只需使用简单的Unicode省略号字符,然后让MVC担心如何对其进行编码。 除非有一些特别令人信服的理由,否则特别需要hellip实体引用而不是字符引用,或者只包含字符作为简单的UTF-8字节。
备选scheme:只使用三个阶段。 省略号(U + 2026)是一个兼容性字符,仅包含在前Unicode编码的往返行程中。 与简单的点相比,它让你很less。
看看这个:
<p>Some text @(new HtmlString(stringToPaste)) </p>
在传递值之前对其进行解码。刚刚有同样的问题(不同的字符),它工作正常:
例如:
@Html.ActionLink(HttpUtility.HtmlDecode(_("&")), "Index", "Home")
虽然烦人