Кодирование / Декодирование HTML & Html.Raw - PullRequest
0 голосов
/ 04 июля 2018

Я слышал, что использование HTML.Raw в представлениях Razor не рекомендуется, и если это так, у меня есть проблема.

Я использую Entity Framework для взаимодействия с моей базой данных SQL. Также я использую SummerNote в качестве редактора для внешнего интерфейса.

Теперь мой код представления находится в блоке @ {}, который, как я считаю, выполняет некоторое кодирование / декодирование.

Сценарий состоит в том, что пользователь вводит некоторый текст в редакторе SummerNote, применяет некоторое форматирование (например, выделяет слово жирным шрифтом) и нажимает кнопку сохранения. Это сгенерирует строку HTML и передаст ее моему контроллеру:

<p>Test <b>string </b>with formatting.</p>

В контроллере я использую кодирование HTML для кодирования:

customerData.Description = HttpUtility.HtmlEncode(summerNoteFieldData);

А затем отправьте его в БД. В БД это выглядит так:

&lt;p&gt;Test &lt;b&gt;string &lt;/b&gt;with formatting.&lt;/p&gt;

Тогда в представлении, когда я это представляю, я делаю:

<div class="summernote">@Html.Raw(@HttpUtility.HtmlDecode(@Model))</div>

Так что, если я удалю Html.Raw, то увижу приведенную выше строку HTML, а не отформатированную.

Это безопасный и правильный путь? Можно ли это улучшить?

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 04 июля 2018

Вы должны кодировать HTML при печати в вашем представлении (используя @Model).

Не кодировать и не декодировать где-либо еще; не храните закодированный контент в вашей базе данных.

...