ASP.NET Core: Как убрать автоматическое кодирование html тегов?

Программа из базы данных SQLite получает текст с html тегами, затем текст выводится пользователю в браузере. Подразумевается, что теги автоматически преобразуются в html, но вместо этого теги просто кодируются.введите сюда описание изображения

введите сюда описание изображения В итоге получается вот это:введите сюда описание изображения

Подскажите, как сделать так, чтобы браузер преобразовывал теги?


Ответы (1 шт):

Автор решения: Vladislav Mikkoev

Решение:

@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 может понять как правильно записать данные в поток ответа.

→ Ссылка