编写/输出未转义的HTML字符串

时间秒杀一切 提交于 2020-02-26 03:27:02

我已经将安全/经过消毒的HTML保存在数据库表中。

如何在Razor视图中写出HTML内容?

它始终会转义<和&字符等转义符&amp;


#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>&lt;script&gt;console.log('insert')&lt;/script&gt;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)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!