我有安全/消毒HTML保存在一个DB表。
如何在Razor视图中写出这个HTML内容?
它总是将<和&字符转义为&。
我有安全/消毒HTML保存在一个DB表。
如何在Razor视图中写出这个HTML内容?
它总是将<和&字符转义为&。
当前回答
在ASP。你应该这样做:
// 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"); }
你可以像这样把你的字符串放到控制器的viewdata中:
ViewData["string"] = DBstring;
然后在view中调用viewdata,像这样:
@Html.Raw(ViewData["string"].ToString())
假设你的内容在一个名为mystring的字符串中…
你可以使用:
@Html.Raw(mystring)
或者,你可以将你的字符串转换为HtmlString或任何其他类型,实现IHtmlString在模型或直接内联使用常规@:
@{ var myHtmlString = new HtmlString(mystring);}
@myHtmlString
在ASP。你应该这样做:
// 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)
除了使用@MvcHtmlString.Create(ViewBag.Stuff) 正如Dommer所建议的,我建议你也使用AntiXSS库phill http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp-net.aspx
它编码了几乎所有可能的XSS攻击字符串。