Как отобразить текст (формат HTML) на веб-сайте (Asp.net C #) - PullRequest
5 голосов
/ 14 декабря 2011

У меня есть текстовый редактор, после применения формата к тексту я отображаю текст при нажатии кнопки.Я хочу, чтобы текст отображался со всем форматированием, примененным в текстовом редакторе.

 lbl_Subject.Text = Server.HtmlEncode(formattedtext);

, но он не отображается в примененном формате, а отображается как

<p> This is Para 1</p> <p> this is Para 2</p> <p> <strong>this is bold</strong></p>

какя могу отобразить текст со всем форматом, примененным в текстовом редакторе

Обновление, которое я пробовал с литералом

, результат

&lt;p&gt; This is Para 1&lt;/p&gt; &lt;p&gt; this is Para 2&lt;/p&gt; &lt;p&gt; &lt;strong&gt;this is bold&lt;/strong&gt;&lt;/p&gt;

Ответы [ 6 ]

8 голосов
/ 14 декабря 2011

используйте div вместо метки.

div1.InnerHtml=formattedtext;
6 голосов
/ 14 декабря 2011

HtmlEncode обеспечивает правильное отображение текста в браузере и не интерпретируется браузером как HTML

Попробуйте удалить HtmlEncode или использовать HtmlDecode .

1 голос
/ 14 декабря 2011

Если вы хотите, чтобы текст отображался как html в браузере, то почему вы его кодируете? HtmlEncode предназначен для того, чтобы взять код, который потенциально содержит символы html, и закодировать его так, чтобы эти символы печатались как необработанный текст. Я бы сказал, что представленный вами код ведет себя именно так, как и следует ожидать. Если вы хотите, чтобы ваш код выводил html, то он должен быть с литералом и просто текстом.

lit_Subject.Text = formattedtext;
1 голос
/ 14 декабря 2011

Возможно, вы захотите использовать Literal Control вместо метки. Это должно взять вашу необработанную строку HTML и вывести ее, как требуется на странице.

В сторону: будьте очень, очень осторожны при отображении HTML-кода следующим образом Нетрудно добавить, например, вредоносные скрипты, которые будут запускаться с просматриваемой страницы.

0 голосов
/ 31 августа 2014

Вы можете использовать этот код: Html.Raw(formattedtext)

0 голосов
/ 14 декабря 2011

Взгляните на AntiXssLibrary (можно найти через nuget).

Особенно в классе Sanitizer. Он берет строку и удаляет из нее все, что связано с безопасностью.

это также изменит имена классов css, поэтому вам, возможно, придется возиться с результатами, чтобы восстановить имена классов. Но он определенно позволяет безопасно размещать RAW HTML на вашей странице, не рискуя XSS-атаками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...