是否有可能在ASP.NET MVC 3中显示从数据库的原始Html?

我在我的数据库中有一个表格,其中一个属性是一个Html页面(没有html,head和body标签),我打算把它放在我的一个视图的中间 – 比方说,我称之为cotroller方法接受一个参数,并返回一个传递这个html大string作为模型的视图。 我search了它(不多,我承认),并发现以下方法:

<%= System.Web.HttpUtility.HtmlDecode(yourEncodedHtmlFromYouDatabase) %> 

这是在这里find的计算器。 当我尝试类似的剃刀的话,我结束了这个:

 @System.Web.HttpUtility.HtmlDecode("<h1>Test</h1>") 

这就是这个想法,但没有像我计划的那样工作。

所有你需要的是: @Html.Raw(yourEncodedHtmlFromYouDatabase)

我假设数据库中的html已经过正确的清理(至less从可靠的来源),因为如果没有,你可能会打开自己的跨站点脚本攻击。

你的方法不起作用的原因是默认的Razor HTML编码输出(每次你用@来显示的东西)。 Html.Raw告诉Razor你信任HTML,并且你想显示它而不用编码它(因为它已经是原始的HTML)。

例如,您也可以返回一个HTMLString,Razor将输出正确的格式。

 @Html.GetSomeHtml() public static HtmlString GetSomeHtml() { var Data = "abc<br/>123"; return new HtmlString(Data); } 

这将允许您显示HTML