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

如何在MVC 5的HTML Helper中输出未编码的HTML内容?

解决Razor Helper中HTML内容被自动编码的问题

这个问题我之前也踩过坑——Razor出于安全防护的默认机制,会对所有字符串输出做HTML编码,所以你传入的<strong>标签才会被转成&lt;strong&gt;这类转义字符。要解决这个问题,有两种实用的方案:

方法一:在Helper内部用Html.Raw()跳过编码

直接修改App_Code目录下的SSLhelpers.cshtml,把需要保留原始HTML的参数用Html.Raw()包裹,告诉Razor不要对这段内容进行编码:

@helper Macro(string Htext, string Ptext) { 
    <h2>@Htext</h2> 
    <p>@Html.Raw(Ptext)</p> 
}

修改后再调用Helper,生成的HTML里<strong>标签就能正常渲染,不会被转义了。

方法二:调用Helper时传入IHtmlString类型内容

要是不想改动Helper的代码,也可以在调用时,把带HTML的内容通过Html.Raw()转换成IHtmlString类型(因为你的Helper参数是string,所以需要转成字符串传递):

@SSLhelpers.Macro(
    "This is my header", 
    Html.Raw("This is my paragraph text. We should be <strong>bold</strong> here but we're not.").ToString()
)

关键安全提醒

务必注意:只有当你完全信任要输出的HTML内容时(比如是你自己编写的固定内容,而非用户输入的内容),才能使用Html.Raw()。如果内容来自用户输入,直接跳过编码会引发XSS攻击风险,这种场景建议先对用户输入做严格的过滤处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:58:44