Подтвердить что ты не робот

Как обойти кодировку HTML при использовании Html.ActionLink в Mvc?

Всякий раз, когда я использую Html.ActionLink, всегда Html кодирует мою строку отображения. Например, я хочу, чтобы моя ссылка выглядела так:

<a href="#" onclick="location.href='https://stackoverflow.com/posts/422/My-Post-Title-Here'; return false;">More&hellip;</a>

он выводится следующим образом: Больше & hellip;

& hellip - это "...", вы можете подумать.

Однако actionlink выводит фактический текст "& hellip;" как текст ссылки. У меня такая же проблема, если я хочу это сделать:

<a href="#" onclick="location.href='https://stackoverflow.com/posts/422/My-Post-Title-Here'; return false;"><em>My-Post-Title-Here</em></a>

Я завершаю: <em> My-Post-Title-Here </em>

Любая идея, как это сделать?

4b9b3361

Ответ 1

Похоже, ActionLink всегда использует вызовы HttpUtility.Encode в тексте ссылки. Вы можете использовать UrlHelper для генерации href и самостоятельно создать тег привязки.

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

В качестве альтернативы вы можете "декодировать" строку, которую вы передаете ActionLink. Построение ссылки в HTML кажется немного читабельнее (для меня) - особенно в Razor. Ниже приведен эквивалент для сравнения.

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

Ответ 2

Ответ, данный Сэмом, действительно правильный, и я использовал его в своем решении, поэтому поэтому я сам его пробовал. Вы можете удалить дополнительную скобку, чтобы она стала примерно такой:

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

Ответ 3

В качестве альтернативы просто используйте простой символ многоточия Unicode\u2026 и пусть MVC беспокоится о том, как его кодировать. Если у вас нет особой убедительной причины, вам понадобится ссылка на объект hellip в отличие от ссылки на символ или просто в том числе символ как простой байт UTF-8.

Альтернативный вариант: просто используйте три периода. Эллипсис (U + 2026) является символом совместимости, включенным только в кодировку с кодированием до Unicode. Это очень мало по сравнению с простыми точками.

Ответ 4

Проверьте это:

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

Ответ 5

Дефрагментируйте его перед передачей значения. Просто эта же проблема (разные символы), и она отлично работает:

Например:

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

Раздражающий, хотя