Estoy intentando generar correos electrónicos con contenido HTML. este contenido ya ha pasado por el saneamiento por lo que no me preocupa en ese sentido, sin embargo cuando llamo:
Razor.Parse(template, model);
en la siguiente plantilla de Razor:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body>
@(new System.Web.HtmlString(Model.EmailContent))
</body>
</html>
el correo electrónico que se envía está codificado en HTMl, pero lo necesito decodificado. ¿Cómo puedo lograr esto?
c#
razor
html-encode
KallDrexx
fuente
fuente
Respuestas:
RazorEngine, como Razor View Engine de MVC, codificará automáticamente los valores escritos en la plantilla. Para solucionar esto, hemos introducido una interfaz llamada
IEncodedString
, con las implementaciones predeterminadasHtmlEncodedString
yRawString
.Para usar este último, simplemente haga una llamada al
Raw
método incorporado deTemplateBase
:fuente
FYI tengo una bifurcación que incluye la sintaxis @ Html.Raw (...) aquí:
https://github.com/Antaris/RazorEngine/pull/105
fuente
Si tiene una clase base personalizada para sus plantillas, puede codificar el
Write
método para que se comporte de manera similar a la plantilla MVC normal: si el valor de salida es,IHtmlString
no debería codificarlo.Aquí está el código que estoy usando en mi
TemplateBase
clase:fuente
Estoy usando RazorEngine 3.8.2 y
@Raw(Model.Content)
funciona perfectamente bien para mí.fuente
Construyó un contenedor para RazorEngine que agrega soporte
@Html.Raw()
y@Html.Partial()
https://github.com/b9chris/RazorEngineComplete
fuente
Encontré que todos estos funcionaron conmigo.
fuente