我有安全/消毒HTML保存在一个DB表。

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

它总是将<和&字符转义为&。


当前回答

假设你的内容在一个名为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)

你可以像这样把你的字符串放到控制器的viewdata中:

 ViewData["string"] = DBstring;

然后在view中调用viewdata,像这样:

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

假设你的内容在一个名为mystring的字符串中…

你可以使用:

@Html.Raw(mystring)

或者,你可以将你的字符串转换为HtmlString或任何其他类型,实现IHtmlString在模型或直接内联使用常规@:

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

有时使用原始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>)

你可以使用

@{ WriteLiteral("html string"); }