Scrivere / esportare le stringhe HTML senza caratteri di escape

Ho salvato / disinfettato l’HTML salvato in una tabella DB.

Come posso scrivere questo contenuto HTML in una visualizzazione Razor?

Esce sempre caratteri come < e la e commerciale in & .

Supponiamo che il tuo contenuto sia all’interno di una stringa chiamata mystring

Puoi usare:

 @Html.Raw(mystring) 

In alternativa è ansible convertire la stringa in HtmlString o qualsiasi altro tipo che implementa IHtmlString nel modello o direttamente in linea e utilizzare regolarmente @ :

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

In ASP.NET MVC 3 dovresti fare qualcosa del genere:

 // 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)

    Puoi usare

     @{ WriteLiteral("html string"); } 

    A volte può essere complicato usare l’html grezzo. Principalmente a causa della vulnerabilità XSS. Se questo è un problema, ma vuoi comunque utilizzare l’html grezzo, puoi codificare le parti spaventose.

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

    Risultati in

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

    Puoi mettere la tua stringa in viewdata nel controller in questo modo:

      ViewData["string"] = DBstring; 

    E quindi chiama quel viewdata in vista in questo modo:

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

    Oltre all’utilizzo di @MvcHtmlString.Create(ViewBag.Stuff) come suggerito da Dommer, ti suggerisco di utilizzare anche la libreria AntiXSS come phill suggerito http://haacked.com/archive/2010/04/06/using-antixss-as- la-default-encoder-per-asp-net.aspx

    Codifica quasi tutta la ansible stringa di attacco XSS.