HTML декодировать и кодировать - PullRequest
2 голосов
/ 12 февраля 2012

Я попытался декодировать HTML-текст, который у меня есть в базе данных в моем приложении MVC 3 Razor.HTML-текст в базе данных не закодирован.Я пытаюсь httpUtility.decode, server.decode, но ни один из них не работает.наконец-то мне удалось заставить его работать с Html.raw(string)

образцом нерабочего кода

@Server.HtmlDecode(item.ShortDescription)
@HttpUtility.HtmlDecode(item.ShortDescription)

Знаете ли вы, почему мы не можем использовать html.decode в моем случае!

Я думал, что это спасет кого-то еще от поиска нескольких часов.

Ответы [ 2 ]

5 голосов
/ 12 февраля 2012

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

Метод Html.Rawоборачивает строку в HtmlString, что говорит механизму бритвы не кодировать ее, когда она помещается на страницу.

2 голосов
/ 12 февраля 2012

Если вы хотите отобразить значение как есть без какой-либо HTML-кодировки, вы можете использовать помощник Html.Raw:

@Html.Raw(item.ShortDescription)

Имейте в виду, что этим вы открываете свой сайт для атак XSSпоэтому вы должны быть очень осторожны с тем, что HTML содержит это свойство ShortDescription.Если это пользователь, который входит в него, вы должны абсолютно убедиться, что это безопасно.Для этого вы можете использовать библиотеку AntiXss .

Знаете ли вы, почему мы не можем использовать html.decode в моем случае!

Потому что Html.Decode возвращает строку, и когда вы подаете строку в функцию @() Razor, она автоматически HTML-кодирует ее снова и разрушает ваши предыдущие усилия.Вот почему существует Html.Raw помощник.

...