Estou tentando gerar e-mails com conteúdo HTML. esse conteúdo já passou por saneamento então não fico preocupado com isso, porém quando ligo:
Razor.Parse(template, model);
no seguinte modelo Razor:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body>
@(new System.Web.HtmlString(Model.EmailContent))
</body>
</html>
o e-mail enviado é codificado em HTMl, mas preciso que ele seja decodificado. Como posso fazer isso?
c#
razor
html-encode
KallDrexx
fonte
fonte
Respostas:
O RazorEngine, como o Razor View Engine do MVC, codificará automaticamente os valores gravados no modelo. Para contornar isso, introduzimos uma interface chamada
IEncodedString
, com as implementações padrão sendoHtmlEncodedString
eRawString
.Para usar o último, basta fazer uma chamada para o
Raw
método embutido deTemplateBase
:fonte
Para sua informação, tenho um fork que inclui a sintaxe @ Html.Raw (...) aqui:
https://github.com/Antaris/RazorEngine/pull/105
fonte
Se você tiver uma classe base personalizada para seus modelos, você pode codificar o
Write
método para se comportar de forma semelhante ao modelo MVC normal: se o valor de saída for,IHtmlString
ele não deve codificá-lo.Este é o código que estou usando em minha
TemplateBase
aula:fonte
Estou usando o RazorEngine 3.8.2 e
@Raw(Model.Content)
está funcionando perfeitamente bem para mim.fonte
Construiu um wrapper para RazorEngine que adiciona suporte para
@Html.Raw()
e@Html.Partial()
https://github.com/b9chris/RazorEngineComplete
fonte
Eu descobri que tudo isso funcionou comigo.
fonte