书写/输出HTMLstring未转义

我有安全/消毒的HTML保存在数据库表中。

我怎样才能把这个HTML内容写在剃刀视图中?

它总是逃避像&和&

假设您的内容位于名为mystring的string中

您可以使用:

 @Html.Raw(mystring) 

或者,您可以将string转换为HtmlString或任何其他在模型中实现IHtmlStringtypes或直接内联并使用常规@

 @{ var myHtmlString = new HtmlString(mystring);} @myHtmlString 

在ASP.NET MVC 3中你应该这样做:

 // Say you have a bit of HTML like this in your controller: ViewBag.Stuff = "<li>Menu</li>" // Then you can do this in your view: @MvcHtmlString.Create(ViewBag.Stuff) 

您可以使用

 @{ WriteLiteral("html string"); } 

有时使用原始html可能会非常棘手。 主要是由于XSS漏洞。 如果这是一个问题,但你仍然想使用原始的HTML,你可以编码可怕的部分。

 @Html.Raw("(<b>" + Html.Encode("<script>console.log('insert')</script>" + "Hello") + "</b>)") 

结果是

 (<b>&lt;script&gt;console.log('insert')&lt;/script&gt;Hello</b>) 

你可以把你的string放入viewdata中,像这样:

  ViewData["string"] = DBstring; 

然后在视图中调用viewdata,如下所示:

 @Html.Raw(ViewData["string"].ToString()) 

除了使用@MvcHtmlString.Create(ViewBag.Stuff)build议的@MvcHtmlString.Create(ViewBag.Stuff) ,我build议你也使用AntiXSS库作为build议phill http://haacked.com/archive/2010/04/06/using-antixss-as-在默认的编码器换ASP-net.aspx

它编码几乎所有可能的XSS攻击string。