tag net mvc component asp asp.net-mvc razor html-encode

asp.net-mvc - component - partial views asp net mvc



Desactiva la codificación HTML en Razor (3)

Devuelve un MvcHtmlString (Hereda de HtmlString ) llamando al método MvcHtmlString.Create() manera:

public static MvcHtmlString SpeakEvil() { return MvcHtmlString.Create("<script>alert(''BLAH!!'');</script>"); }


También puede convertirlo en una extensión de cadena:

public static MvcHtmlString HtmlSafe(this string content) { return MvcHtmlString.Create(content); }


Fuente:
http://geekswithblogs.net/shaunxu/archive/2010/04/10/lt-gt-htmlencode-ihtmlstring-and-mvchtmlstring.aspx

Tengo una función que devuelve un fragmento de JavaScript y / o HTML.

static public string SpeakEvil() { return "<script>alert(''BLAH!!'');</script>"; }

En la vista, Razor está codificando HTML correctamente, como la mayoría esperaría.

@StaticFunctions.SpeakEvil()

¿Cómo tengo Razor not HTML Encode this, para que el HTML y JavaScript se emitan literalmente, y que cualquier script realmente se ejecute?


Puede usar la función Raw() pero está principalmente destinada a cosas que provienen de la base de datos.

Para un ayudante como usted, le sugiero que devuelva un IHtmlString :

static public IHtmlString SpeakEvil() { return new HtmlString("<script>alert(''BLAH!!'');</script>"); }

De esta forma, no tendrá que llamar a Raw() en todos los sitios de llamadas.


Usa el helper Html.Raw .

@Html.Raw(StaticFunctions.SpeakEvil())