Désactiver L'encodage HTML dans Razor
j'ai une fonction qui renvoie un extrait de JavaScript et/ou HTML.
static public string SpeakEvil()
{
return "<script>alert('BLAH!!');</script>";
}
dans la vue, Razor est à juste titre HTML l'encodant, comme la plupart s'y attendrait.
@StaticFunctions.SpeakEvil()
Comment puis-je avoir le rasoir HTML encodent ceci, de sorte que le HTML et le JavaScript sont émis mot à mot, et que n'importe quel script fonctionne réellement?
21
demandé sur
p.campbell
2011-02-11 23:05:47
3 réponses
vous pourriez utiliser le Raw()
fonction mais il est principalement destiné à des choses qui viennent de la base de données.
Pour une aide comme vous avez je suggère de retourner un IHtmlString
:
static public IHtmlString SpeakEvil() {
return new HtmlString("<script>alert('BLAH!!');</script>");
}
de cette façon vous n'avez pas à appeler Raw()
à chaque site d'appel.
50
répondu
marcind
2011-02-11 20:32:56
Retour MvcHtmlString
(Hérite de HtmlString
) en appelant le MvcHtmlString.Create()
méthode comme ceci:
public static MvcHtmlString SpeakEvil()
{
return MvcHtmlString.Create("<script>alert('BLAH!!');</script>");
}
Vous pouvez aussi en faire une extension String:
public static MvcHtmlString HtmlSafe(this string content)
{
return MvcHtmlString.Create(content);
}
4
répondu
Nikkelmann
2012-03-21 11:14:32