我已经将安全/经过消毒的HTML保存在数据库表中。
如何在Razor视图中写出HTML内容?
它始终会转义<
和&字符等转义符&
。
#1楼
您可以使用
@{ WriteLiteral("html string"); }
#2楼
您可以像这样将字符串放入控制器的viewdata中:
ViewData["string"] = DBstring;
然后像这样在视图中调用该viewdata:
@Html.Raw(ViewData["string"].ToString())
#3楼
有时使用原始html可能很棘手。 主要是因为XSS漏洞。 如果这是一个问题,但是您仍然想使用原始html,则可以对这些令人恐惧的部分进行编码。
@Html.Raw("(<b>" + Html.Encode("<script>console.log('insert')</script>" + "Hello") + "</b>)")
结果是
(<b><script>console.log('insert')</script>Hello</b>)
#4楼
假设您的内容在名为mystring
的字符串中...
您可以使用:
@Html.Raw(mystring)
或者,您可以将字符串转换为HtmlString
或任何其他在模型中或直接内联实现IHtmlString
类型,并使用常规@
:
@{ var myHtmlString = new HtmlString(mystring);}
@myHtmlString
#5楼
在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)
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3162064