Почему я не могу выводить HTML-код?

#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.