ASP.NET Core: Как убрать автоматическое кодирование html тегов?
Программа из базы данных SQLite получает текст с html тегами, затем текст выводится пользователю в браузере. Подразумевается, что теги автоматически преобразуются в html, но вместо этого теги просто кодируются.
Подскажите, как сделать так, чтобы браузер преобразовывал теги?
Ответы (1 шт):
Решение:
@Html.Raw("Тут вставить HTML код строкой");
Объяснение:
По умолчанию вывод собачкой @ выполняет подмену определённых символов в целях безопасности. Чтобы изменить поведение необходимо вызвать метод Html.Raw. Его не рекомендуется использовать без посредников (нужна защита от злоумышленников, вид атаки JS-инъекция например).
Лучший способ определить границы дозволенного — это создать пользовательский Markdown syntax или воспользоваться существующими решениями. По нему можно будет выполнять безопасную подмену определёнными HTML тегами.
Что происходит за кадром:
Код, который генерируется, если указываем только собачку @:
Write(@"<div style=""background-color: red;"">Текст</div>");
Если вызываем метод Html.Raw:
Write(Html.Raw(@"<div style=""background-color: red;"">Текст</div>"));
Метод Html.Raw возвращает не строку, а тип IHtmlContent, засчёт которого метод Write может понять как правильно записать данные в поток ответа.

