在ASP.NET MVC 3中解码HTML

12
在asp.net mvc 3 preview 1中,@会自动编码HTML内容。是否有其他替代方案以允许HTML内容呈现?考虑以下情况: @view.BestSitesEver.Replace("stackoverflow", "<h1>StackOverflow</h1>"), 这将只打印出:<h1>stackoverflow</h1>

这个“stackoverflow”参数会是什么?一个div吗? - Bruno Machado - vargero
2个回答

19
你可以使用这个
@MvcHtmlString.Create(site.Replace("stackoverflow", "<h1>stackoverflow</h1>"))

这将输出HTML字符串,不进行编码。

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

有了Erik Porter的评论


12
从MVC 3开始,您不再需要使用MvcHtmlString。@(new HtmlString("<h1>StackOverflow</h1>"))可以很好地工作。任何实现IHtmlString接口的内容都可以使用。我们正在考虑在将来创建一个帮助程序或快捷方式来为您创建新的HtmlString。 - Erik Porter

14

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

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

有没有办法在声明性帮助程序(即在App_Code中)内使其工作?看起来所有的Html帮助程序都在那里失效了。 - Chris Rogers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接