You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor中是否有Html.Raw的等效方法?如何无编码渲染字符串HTML?

在Blazor/Razor视图中渲染未编码的HTML内容

嘿,这个问题我太熟了!Blazor/Razor视图默认会自动编码所有输出的字符串,目的是防止XSS攻击,但如果是你信任的HTML内容,想要直接渲染不编码的话,用下面两种方法就搞定:

  • 使用MarkupString类型包装内容
    这是Blazor官方推荐的方式,专门用来标记无需编码的HTML内容。你只需要把存储HTML的字符串转换成MarkupString实例,直接在视图里引用即可:

    @page "/render-raw-html"
    
    <div class="container">
        @{
            // 假设这是你存储在字符串里的HTML内容
            string storedHtml = "<h4 style='color: #2c3e50;'>这是一段带样式的HTML</h4><p>包含<strong>加粗</strong>和<em>斜体</em>文本</p>";
            // 转换成MarkupString,告诉Blazor不要编码
            MarkupString renderableHtml = new MarkupString(storedHtml);
        }
    
        <!-- 直接渲染原始HTML -->
        @renderableHtml
    </div>
    
  • 内联强制转换(适合简单场景)
    如果不想单独声明变量,也可以直接在视图里把字符串强制转换成MarkupString,代码更简洁:

    @page "/inline-raw-html"
    
    <p>@((MarkupString)"<span class='badge bg-primary'>内联渲染的HTML标签</span>")</p>
    

⚠️ 必须重视的安全提醒
Blazor默认的自动编码是为了防范XSS注入攻击!只有当你完全信任HTML内容的来源(比如自己生成的静态内容)时,才使用上面的方法。如果内容来自用户输入(比如评论、表单提交的内容),一定要先对内容进行严格的XSS过滤,确保没有恶意脚本后再渲染。

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:12:39