Неожиданное поведение с использованием MVC Razor's Html. Код HTML-помощник - PullRequest
2 голосов
/ 21 мая 2011

Я пытаюсь отобразить в браузере буквальный HTML через мой Razor View.

У меня есть что-то вроде этого в коде:

@Html.Encode("<!-- foo -->")

Я ожидал, что помощник Html.Encode вернет

&lt;-- foo --&gt;

но вместо этого он возвращает

&amp;lt;!-- foo --&amp;gt;

Похоже, что помощник Encode кодирует строку дважды.

Итак, чтобы получить желаемый результат, мне нужно обернуть помощник Encode с помощью помощника Raw следующим образом

@Html.Raw(Html.Encode("<!-- foo -->"))

Я новичок в MVC / Razor, так что это поведение меня немного смущает и неуверенно относительно того, верны ли мои ожидания того, как Html.Encode должен вести себя , правильно.

Двигаясь вперед с Razor, должен ли я смириться с этим и привыкнуть оборачивать Html.Encode в Html.Raw, когда я хочу кодировать строку в HTML? Есть ли "лучший" способ кодирования строки HTML в Razor?

Ответы [ 2 ]

4 голосов
/ 21 мая 2011

Синтаксис @ выполняет кодирование HTML.Используя @ Html.Encode, вы вручную кодируете, а затем @ кодирует то, что вы уже закодировали.

Итак, чтобы получить то, что вы хотите, просто выполните

@("<!-- foo -->")
2 голосов
/ 21 мая 2011

Оператор @ уже кодирует HTML в Razor (если аргумент не является экземпляром IHtmlString).Так что вы можете попробовать:

@("<!-- foo -->")

, что дает:

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