2010-09-08 7 views
12

@ dans asp.net mvc 3 Aperçu 1 encode automatiquement html, existe-t-il un autre moyen de laisser le html?Décodage HTML dans ASP.NET MVC 3

penser à ce scénario:

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

Ce serait tout simplement imprimer: <h1>stackoverflow</h1>

+0

Qu'est-ce que ce paramètre "stackoverflow" être? Un div? –

+0

@Bruno, juste du texte. –

Répondre

19

Vous pouvez utiliser ce

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

Ceci affichera la chaîne html sans encodage

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

Et avec Erik Commentaire de Porter

+12

A partir de MVC 3, vous n'avez plus besoin d'utiliser MvcHtmlString. @ (new HtmlString ("

StackOverflow

")) fonctionnera très bien. Toute implémentation de IHtmlString fonctionnera cependant. Nous envisageons un assistant ou un raccourci qui créerait le nouveau HtmlString pour vous dans le futur. –

14

Un peu tard maintenant, mais il y a une méthode d'extension pratique dans MVC3: Html.Raw():

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

Existe-t-il un moyen de faire fonctionner ceci dans une aide déclarative (ie - dans App_Code)? On dirait que tous les assistants Html sont cassés là-bas. –