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 predeterminadasHtmlEncodedStringyRawString.Para usar este último, simplemente haga una llamada al
Rawmé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
Writemétodo para que se comporte de manera similar a la plantilla MVC normal: si el valor de salida es,IHtmlStringno debería codificarlo.Aquí está el código que estoy usando en mi
TemplateBaseclase: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