Jak ominąć kodowanie HTML podczas korzystania z Html.ActionLink w Mvc?

Kiedy używam Html.ActionLink to zawsze Html koduje mój łańcuch wyświetlania. Na przykład chcę, aby mój link wyglądał tak:

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

Wychodzi tak: Więcej...

&hellip is "..."okryte, że się zastanawiasz.

Actionlink wyświetla tekst " ... " jako tekst linku. Mam ten sam problem jeśli chcę to wypisać:

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

Kończę z: My-Post-Title-Here

Wiesz, jak to zrobić?
Author: Eddie, 2009-01-08

5 answers

Wygląda na to, że ActionLink zawsze używa wywołań HttpUtility.Zakoduj tekst linku. Możesz użyć UrlHelper do wygenerowania href i zbudowania znacznika kotwicy samodzielnie.

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

Alternatywnie możesz "dekodować" przekazywany ciąg znaków do ActionLink. Konstruowanie linku w HTML wydaje mi się nieco bardziej czytelne (jak dla mnie) - szczególnie w Razor. Poniżej jest odpowiednikiem dla porównania.

@Html.ActionLink(HttpUtility.HtmlDecode("More&hellip;"), "Posts", ...)
 78
Author: tvanfosson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-14 02:56:45

Odpowiedź udzielona przez sama jest rzeczywiście poprawna i użyłem jej w moim rozwiązaniu, więc wypróbowałem ją sam. Możesz chcieć usunąć dodatkowy nawias, aby stał się czymś takim:

@Html.ActionLink(HttpUtility.HtmlDecode("&amp;"), "Index", "Home")
 10
Author: oogway,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-13 18:24:08

Alternatywnie, wystarczy użyć zwykłego znaku wielokropka Unicode \u2026 i niech MVC martwi się jak to zakodować. Chyba, że jest jakiś szczególnie ważny powód, dla którego potrzebujesz referencji hellip entity zamiast referencji znakowej lub po prostu włączenia znaku jako prostego UTF-8 bajtów.

Alternatywnie alternatywnie: wystarczy użyć trzech okresów. Elipsa (u + 2026) jest znakiem zgodności, dołączonym tylko do kodowania round-trip do pre-Unicode. To daje ci bardzo mało w porównaniu do prostych kropek.

 7
Author: bobince,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-08 02:18:46

Zobacz to:

  <p>Some text   @(new HtmlString(stringToPaste)) </p>
 7
Author: Pavel Shkleinik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-30 18:38:37

Dekoduj go przed przekazaniem wartości. Po prostu miałem ten sam problem (różne znaki) i działa dobrze:

Eg:

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

Irytujące choć

 4
Author: Sam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-19 02:01:21