2010-09-08 15 views
12

@ in asp.net mvc 3 preview 1 codifica automaticamente html, c'è un modo alternativo per far sì che ci sia html?Decodifica HTML in ASP.NET MVC 3

pensare a questo scenario:

@view.BestSitesEver.Replace("stackoverflow", "<h1>StackOverflow</h1>")

Questo sarebbe solo stampare: <h1>stackoverflow</h1>

+0

Quale sarebbe questo parametro "StackOverflow" essere? Un div? –

+0

@Bruno, solo testo. –

risposta

19

È possibile utilizzare questa uscita

@MvcHtmlString.Create(site.Replace("stackoverflow", "<h1>stackoverflow</h1>")) 

Questa volontà stringa HTML senza codifica

@(new HtmlString(site.Replace("stackoverflow", "<h1>stackoverflow</h1>"))) 

E con il commento di Erik Porter

+12

A partire da MVC 3 non è più necessario utilizzare MvcHtmlString. @ (new HtmlString ("

StackOverflow

")) funzionerà correttamente. Tuttavia, qualsiasi implementazione di IHtmlString funzionerà. Stiamo prendendo in considerazione un helper o una scorciatoia che crei il nuovo HtmlString per te in futuro. –

14

Un po 'in ritardo, ma ora c'è un metodo conveniente estensione nella MVC3: Html.Raw():

@Html.Raw(site.Replace("stackoverflow", "<h1>stackoverflow</h1>")) 
+0

C'è un modo per farlo funzionare all'interno di un helper dichiarativo (cioè in App_Code)? Sembra che tutti gli helper HTML siano interrotti. –