在ASP.NET MVC 3中解码HTML

在ASP.NET MVC 3中解码HTML,asp.net,razor,asp.net-mvc-3,Asp.net,Razor,Asp.net Mvc 3,@在asp.net mvc 3 preview 1中,自动对html进行编码,有没有其他方法可以让html出现 想想这个场景: @view.BestSitesEver.Replace(“stackoverflow”、“stackoverflow”) 这会打印出来:stackoverflow您可以使用这个 @MvcHtmlString.Create(site.Replace("stackoverflow", "<h1>stackoverflow</h1>")) @MvcH

@
在asp.net mvc 3 preview 1中,自动对html进行编码,有没有其他方法可以让html出现

想想这个场景:

@view.BestSitesEver.Replace(“stackoverflow”、“stackoverflow”)

这会打印出来:
stackoverflow

您可以使用这个

@MvcHtmlString.Create(site.Replace("stackoverflow", "<h1>stackoverflow</h1>"))
@MvcHtmlString.Create(site.Replace(“stackoverflow”、“stackoverflow”))
这将不编码地输出html字符串

@(新的HtmlString(site.Replace(“stackoverflow”、“stackoverflow”))

Erik Porter的评论现在晚了一点,但是MVC3中有一个方便的扩展方法: Html.Raw():

@Html.Raw(site.Replace(“stackoverflow”、“stackoverflow”))

从MVC 3开始,您不再需要使用MvcHtmlString@(新的HtmlString(“StackOverflow”)可以正常工作。不过,IHtmlString的任何实现都会起作用。我们正在考虑一个助手或快捷方式,将来可以为您创建新的HtmlString。这个“stackoverflow”参数是什么?一个div?有没有办法让它在一个声明性助手(即应用程序中的代码)中工作?看起来所有的Html助手都在那里被破坏了。
@(new HtmlString(site.Replace("stackoverflow", "<h1>stackoverflow</h1>")))
@Html.Raw(site.Replace("stackoverflow", "<h1>stackoverflow</h1>"))