2013-03-07 13 views
14

Ho un modello con contenuto di proprietà che contiene una stringa HTML.Come evitare l'escape di html in Razor (standalone)?

var model = new { Content = ... } 
Razor.Parse(templateBody, model) 

Come posso eseguire il rendering di questa stringa utilizzando Razor autonomo.

ho provato:

@(new HtmlString(Model.Content)) 

e anche

@(HttpUtility.HtmlDecode(Model.Content)) 

Model.Content rende sempre HTML-sfuggito.

+2

Hai visto questo SO rispondere? http://stackoverflow.com/a/4973743/195550 –

+2

Il '@ (new HtmlString (Model.Content))' dovrebbe fare il trucco ... provalo con '' ((IHtmlString) new HtmlString (Model.Content)) ' – nemesv

+0

Non funziona. Non ho HtmlHelper al di fuori del progetto web. – Exta

risposta

15

In libreria RazorEngine speciale tipo "do-not-escape-me" è RazorEngine.Text.IEncodedString. Utilizzare metodo di supporto semplice sulla classe di base del modello:

@Raw("<script>alert('!');</script>") 

Per convincere VS e ReSharper per darvi IntelliSense aggiungere seguente riga nella parte superiore del modello:

@inherits RazorEngine.Templating.TemplateBase 
+0

Questo è davvero piuttosto fastidioso che non usi IHtmlString come ci si aspetterebbe. – rossisdead

32

questo dovrebbe funzionare Html.Raw(Model.Content)

Problemi correlati