2024-12-04@Html.Raw() 是一个用于在 Razor 视图中直接输出未经编码的 HTML 内容的方法。它属于 System.Web.Mvc.HtmlHelper 类(在传统 ASP.NET MVC 中)或者 Microsoft.AspNetCore.Mvc.Rendering.IHtmlHelper 类(在 ASP.NET Core 中)。
默认情况下,Razor 会对输出的字符串进行 HTML 编码,以防止 XSS(跨站脚本攻击)。@Html.Raw() 允许你跳过这种自动编码,直接将字符串作为 HTML 输出。
假设你有以下内容需要在视图中显示:
string content = "<strong>重要内容</strong>";
直接使用 @content 会被 Razor 编码,结果如下:
<strong>重要内容</strong>
但如果你使用 @Html.Raw(content),输出将是:
<strong>重要内容</strong>
2. 视图中的例子
@{
var htmlString = "<h1>欢迎访问</h1>";
}
@Html.Raw(htmlString)
结果:
<h1>欢迎访问</h1>
避免 XSS 漏洞
@Html.Raw() 跳过了 HTML 编码,如果输入的数据来源于用户或不可信的数据,可能会导致 XSS 漏洞。<script>alert('XSS!')</script>,直接使用 @Html.Raw() 会让这个脚本在浏览器中执行。建议仅在可信数据中使用
@Html.Raw() 的数据是可靠的、经过验证的。安全替代方法
@yourVariable