Escritura / salida de cadenas de HTML sin guardar

Tengo HTML seguro / desinfectado guardado en una tabla DB.

¿Cómo puedo tener este contenido HTML escrito en una vista Razor?

Siempre se escapa de caracteres como < y símbolos de & .

Supongamos que su contenido está dentro de una cadena llamada mystring

Puedes usar:

 @Html.Raw(mystring) 

Alternativamente, puede convertir su cadena a HtmlString o cualquier otro tipo que implemente IHtmlString en modelo o directamente en línea y use @ regular:

 @{ var myHtmlString = new HtmlString(mystring);} @myHtmlString 

En ASP.NET MVC 3, debe hacer algo como esto:

 // Say you have a bit of HTML like this in your controller: ViewBag.Stuff = "
  • Menu
  • " // Then you can do this in your view: @MvcHtmlString.Create(ViewBag.Stuff)

    Puedes usar

     @{ WriteLiteral("html string"); } 

    A veces puede ser complicado usar html sin formato. Principalmente debido a la vulnerabilidad XSS. Si eso es una preocupación, pero aún desea usar HTML sin procesar, puede codificar las partes que dan miedo.

     @Html.Raw("(" + Html.Encode("" + "Hello") + ")") 

    Resultados en

     (<script>console.log('insert')</script>Hello) 

    Puede poner su cadena en viewdata en el controlador de esta manera:

      ViewData["string"] = DBstring; 

    Y luego llame a esa viewdata a la vista de esta manera:

     @Html.Raw(ViewData["string"].ToString()) 

    Además de usar @MvcHtmlString.Create(ViewBag.Stuff) como lo sugiere Dommer, le sugiero que también use la biblioteca AntiXSS como phill sugerido http://haacked.com/archive/2010/04/06/using-antixss-as- the-default-encoder-for-asp-net.aspx

    Codifica casi toda la cadena de ataque XSS posible.