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);
}
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())