J'essaie de générer des e-mails avec du contenu HTML. ce contenu est déjà passé par l'assainissement, donc je ne suis pas inquiet à cet égard, cependant quand j'appelle:
Razor.Parse(template, model);
sur le modèle Razor suivant:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body>
@(new System.Web.HtmlString(Model.EmailContent))
</body>
</html>
l'e-mail qui est produit est codé HTMl, mais j'en ai besoin décodé. Comment puis-je accomplir cela?
c#
razor
html-encode
KallDrexx
la source
la source
Réponses:
RazorEngine, comme Razor View Engine de MVC, encodera automatiquement les valeurs écrites dans le modèle. Pour contourner ce problème, nous avons introduit une interface appelée
IEncodedString
, les implémentations par défaut étantHtmlEncodedString
etRawString
.Pour utiliser ce dernier, il suffit d'appeler la
Raw
méthode intégrée deTemplateBase
:la source
Pour info, j'ai un fork qui inclut la syntaxe @ Html.Raw (...) ici:
https://github.com/Antaris/RazorEngine/pull/105
la source
Si vous avez une classe de base personnalisée pour vos modèles, vous pouvez coder la
Write
méthode pour qu'elle se comporte comme un modèle MVC normal: si la valeur de sortie est,IHtmlString
elle ne doit pas l'encoder.Voici le code que j'utilise dans ma
TemplateBase
classe:la source
J'utilise RazorEngine 3.8.2 et
@Raw(Model.Content)
fonctionne parfaitement pour moi.la source
Création d'un wrapper pour RazorEngine qui ajoute la prise en charge
@Html.Raw()
et@Html.Partial()
https://github.com/b9chris/RazorEngineComplete
la source
J'ai trouvé que tout cela fonctionnait avec moi.
la source