Я пытаюсь создавать электронные письма с содержанием HTML. этот контент уже прошел очистку, поэтому меня это не беспокоит, но когда я звоню:
Razor.Parse(template, model);
в следующем шаблоне Razor:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body>
@(new System.Web.HtmlString(Model.EmailContent))
</body>
</html>
выводимое электронное письмо закодировано в HTMl, но мне нужно его декодировать. Как я могу этого добиться?
c#
razor
html-encode
KallDrexx
источник
источник
Ответы:
RazorEngine, как и MVC Razor View Engine, автоматически кодирует значения, записанные в шаблон. Чтобы обойти это, мы представили интерфейс
IEncodedString
с именами по умолчаниюHtmlEncodedString
иRawString
.Чтобы использовать последнее, просто вызовите встроенный
Raw
методTemplateBase
:источник
К вашему сведению, у меня есть вилка, которая включает здесь синтаксис @ Html.Raw (...):
https://github.com/Antaris/RazorEngine/pull/105
источник
Если у вас есть собственный базовый класс для ваших шаблонов, вы можете закодировать
Write
метод так, чтобы он вел себя аналогично обычному шаблону MVC: если выходное значение равно,IHtmlString
он не должен его кодировать.Вот код, который я использую в своем
TemplateBase
классе:источник
Я использую RazorEngine 3.8.2, и
@Raw(Model.Content)
у меня все работает отлично.источник
Создал оболочку для RazorEngine, которая добавляет поддержку
@Html.Raw()
и@Html.Partial()
https://github.com/b9chris/RazorEngineComplete
источник
Я обнаружил, что все это работает со мной.
источник