È ansible visualizzare HTML Html dal database in ASP.NET MVC 3?

Ho una tabella nel mio db dove una delle proprietà è una pagina Html (senza i tag html, head e body), e intendo metterla nel mezzo di una delle mie visualizzazioni – ad esempio, chiamo un metodo cotroller che accetta un argomento e restituisce una vista che passa questa grande stringa html come modello. L’ho cercato (non molto, lo ammetto) e ho trovato il seguente metodo:

 

Questo è stato trovato qui in StackOverflow. Quando ho provato un simile aproach del razor, ho finito con questo:

 @System.Web.HttpUtility.HtmlDecode("

Test

")

Questa è l’idea, ma non ha funzionato come previsto.

Tutto ciò che serve è: @Html.Raw(yourEncodedHtmlFromYouDatabase)

Suppongo che l’html nel database sia stato correttamente disinfettato (o almeno da una fonte attendibile), perché altrimenti potrebbe aprirsi agli attacchi di cross-site scripting.

Il motivo per cui il tuo approccio non ha funzionato è che Razor HTML-codifica l’output per impostazione predefinita (ogni volta che usi @ per visualizzare qualcosa). Html.Raw dice a Razor che ti fidi dell’HTML e vuoi visualizzarlo senza codificarlo (dato che è già HTML grezzo).

Puoi anche restituire un HTMLString e Razor restituirà la formattazione corretta, ad esempio.

 @Html.GetSomeHtml() public static HtmlString GetSomeHtml() { var Data = "abc
123"; return new HtmlString(Data); }

Questo ti permetterà di visualizzare HTML