Как обойти кодировку HTML при использовании Html.ActionLink в Mvc?
Всякий раз, когда я использую Html.ActionLink, всегда Html кодирует мою строку отображения. Например, я хочу, чтобы моя ссылка выглядела так:
<a href="#" onclick="location.href='https://stackoverflow.com/posts/422/My-Post-Title-Here'; return false;">More…</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>
Любая идея, как это сделать?
Ответы
Ответ 1
Похоже, ActionLink всегда использует вызовы HttpUtility.Encode в тексте ссылки. Вы можете использовать UrlHelper для генерации href и самостоятельно создать тег привязки.
<a href='@Url.Action("Posts", ...)'>More…</a>
В качестве альтернативы вы можете "декодировать" строку, которую вы передаете ActionLink. Построение ссылки в HTML кажется немного читабельнее (для меня) - особенно в Razor. Ниже приведен эквивалент для сравнения.
@Html.ActionLink(HttpUtility.HtmlDecode("More…"), "Posts", ...)
Ответ 2
Ответ, данный Сэмом, действительно правильный, и я использовал его в своем решении, поэтому поэтому я сам его пробовал.
Вы можете удалить дополнительную скобку, чтобы она стала примерно такой:
@Html.ActionLink(HttpUtility.HtmlDecode("&"), "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(_("&")), "Index", "Home")
Раздражающий, хотя