我有安全/消毒HTML保存在一个DB表。
如何在Razor视图中写出这个HTML内容?
它总是将<和&字符转义为&。
我有安全/消毒HTML保存在一个DB表。
如何在Razor视图中写出这个HTML内容?
它总是将<和&字符转义为&。
当前回答
有时使用原始html会很棘手。主要是因为XSS漏洞。如果这是一个问题,但你仍然想使用原始html,你可以编码可怕的部分。
@Html.Raw("(<b>" + Html.Encode("<script>console.log('insert')</script>" + "Hello") + "</b>)")
结果
(<b><script>console.log('insert')</script>Hello</b>)
其他回答
你可以使用
@{ WriteLiteral("html string"); }
假设你的内容在一个名为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)
有时使用原始html会很棘手。主要是因为XSS漏洞。如果这是一个问题,但你仍然想使用原始html,你可以编码可怕的部分。
@Html.Raw("(<b>" + Html.Encode("<script>console.log('insert')</script>" + "Hello") + "</b>)")
结果
(<b><script>console.log('insert')</script>Hello</b>)
在razorenengine中使用模板函数的完整示例(例如,用于生成电子邮件):
@model SomeModel
@{
Func<PropertyChangeInfo, object> PropInfo =
@<tr class="property">
<td>
@item.PropertyName
</td>
<td class="value">
<small class="old">@item.OldValue</small>
<small class="new">@item.CurrentValue</small>
</td>
</tr>;
}
<body>
@{ WriteLiteral(PropInfo(new PropertyChangeInfo("p1", @Model.Id, 2)).ToString()); }
</body>