#c# #asp.net
#c# #asp.net
Вопрос:
Я пытаюсь вывести HTML на свои веб-страницы, выполнив
<p>
@Server.HtmlEncode(elem.Text.ToString().Replace("[BR]", "<br />"));
</p>
[BR]
я закодирован <br />
, так как я не могу / не могу сохранить html напрямую. Однако проблема в том, что когда я использую @Server.HtmlEncode я получаю этот вывод:
one littleamp;<br /amp;>amp;<br /amp;>test!;
Без кодировки также выглядит неправильно, затем выводится <br />
открытым текстом: (
Кто-нибудь знает, как заставить его правильно кодировать / выводить?
Комментарии:
1. HtmlEncode кодирует текст, подходящий для передачи в html. То есть
<,>
недопустимый xml, поэтому они кодируются. Я не знаю asp.net , но вы получаете именно то, что вы говорите коду, чтобы он дал вам.2. Что означает правильно ? Приведите пример ввода и ожидаемого результата.
Ответ №1:
Вы используете двойную кодировку HTML. @
уже выполняет кодирование Html. Попробуйте:
@elem.Text.ToString().Replace("[BR]", "<br />")
или:
@(new HtmlString(elem.Text.ToString().Replace("[BR]", "<br />")))
или:
@Html.Raw(elem.Text.ToString().Replace("[BR]", "<br />"))
Комментарии:
1.
Raw
! Да, никогда не знал об этом! Спасибо за совет. 🙂
Ответ №2:
Слово Encode
in HtmlEncode
означает, что оно переводит необработанный html в его кодированный вывод, то есть то, что вы видите. Если вам нужен необработанный html, тогда вы делаете Response.Write()
или, поскольку похоже, что вы используете Razor, @Html.Raw()
.
Ответ №3:
HtmlEncode экранирует специальные символы, такие как < > . Используйте Html.Raw вместо if.