J'ai du HTML sécurisé / aseptisé enregistré dans une table DB.
Comment puis-je avoir ce contenu HTML écrit dans une vue Razor?
Il échappe toujours aux personnages comme <
et aux esperluettes &
.
J'ai du HTML sécurisé / aseptisé enregistré dans une table DB.
Comment puis-je avoir ce contenu HTML écrit dans une vue Razor?
Il échappe toujours aux personnages comme <
et aux esperluettes &
.
@Html.Raw()
Réponses:
Supposons que votre contenu se trouve dans une chaîne nommée
mystring
...Vous pouvez utiliser:
Alternativement, vous pouvez convertir votre chaîne en
HtmlString
ou tout autre type qui implémenteIHtmlString
dans le modèle ou directement en ligne et utiliser régulièrement@
:la source
razor
syntaxe et je suisHtml.Raw
définitivement disponible.Dans ASP.NET MVC 3, vous devriez faire quelque chose comme ceci:
la source
Vous pouvez utiliser
la source
Html.Raw()
ne fonctionne pas làParfois, il peut être difficile d'utiliser du HTML brut. Principalement à cause de la vulnérabilité XSS. Si c'est un problème, mais que vous souhaitez toujours utiliser du HTML brut, vous pouvez encoder les parties effrayantes.
Résulte en
la source
Vous pouvez mettre votre chaîne dans viewdata dans le contrôleur comme ceci:
Et puis appelez ces données de vue en vue comme ceci:
la source
En plus d'utiliser
@MvcHtmlString.Create(ViewBag.Stuff)
comme suggéré par Dommer, je vous suggère d'utiliser également la bibliothèque AntiXSS comme suggéré phill http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp -net.aspxIl encode presque toute la chaîne d'attaque XSS possible.
la source
Exemple complet d'utilisation des fonctions de modèle dans RazorEngine (pour la génération d'e-mails, par exemple):
la source