Reputation: 116050
Whenever I use Html.ActionLink it always Html encodes my display string. For instance I want my link to look like this:
<a href="/posts/422/My-Post-Title-Here">More…</a>
it outputs like this: More…
&hellip is "..." incase you were wondering.
However the actionlink outputs the actual text "…" as the link text. I have the same problem with if I want to output this:
<a href="/posts/422/My-Post-Title-Here"><em>My-Post-Title-Here</em></a>
I wind up with: <em>My-Post-Title-Here</em>
Any idea how to do this?
Upvotes: 42
Views: 28200
Reputation: 532435
It looks like ActionLink always uses calls HttpUtility.Encode on the link text. You could use UrlHelper to generate the href and build the anchor tag yourself.
<a href='@Url.Action("Posts", ...)'>More…</a>
Alternatively you can "decode" the string you pass to ActionLink. Constructing the link in HTML seems to be slightly more readable (to me) - especially in Razor. Below is the equivalent for comparison.
@Html.ActionLink(HttpUtility.HtmlDecode("More…"), "Posts", ...)
Upvotes: 81
Reputation: 6347
Check out this:
<p>Some text @(new HtmlString(stringToPaste)) </p>
Upvotes: 6
Reputation: 111
The answer given by Sam is actually correct and I used it in my solution so I have therefore tried it myself. You may want to remove the extra parenthesis so it becomes something like this:
@Html.ActionLink(HttpUtility.HtmlDecode("&"), "Index", "Home")
Upvotes: 10
Reputation: 1834
Decode it before passing the value in. Just had this same issue (different characters) and it works fine:
Eg:
@Html.ActionLink(HttpUtility.HtmlDecode(_("&")), "Index", "Home")
Annoying though
Upvotes: 4
Reputation: 536339
Alternatively, just use a plain Unicode ellipsis character \u2026 and let MVC worry about how to encode it. Unless there's some particularly compelling reason you'd specifically need a hellip entity reference as opposed to a character reference or just including the character as simple UTF-8 bytes.
Alternative alternatively: just use three periods. The ellipsis (U+2026) is a compatibility character, only included to round-trip to pre-Unicode encodings. It gets you very little compared to simple dots.
Upvotes: 7