ASP.NET MVC中如何将转义sub标签的文本渲染为正常显示格式?
解决ASP.NET MVC中双重HTML转义的渲染问题
这个问题我太熟了!你遇到的是双重HTML转义的坑——你的字符串里的&lt;sub&gt;其实是<sub>被转了两次的结果:第一次<变成<,第二次&又被转成&,所以最终就成了&lt;sub&gt;。直接用@Html.Raw()只能解析第一层转义,所以出来的还是<sub>,没法变成真正的下标标签。
具体解决步骤
你需要先把字符串里的HTML实体解码,还原成真正的<sub>标签,再用Html.Raw()输出,分两种框架情况:
1. ASP.NET Framework 项目
使用HttpUtility.HtmlDecode方法先解码,再输出:
@using System.Web; // 如果视图没引用这个命名空间,需要加上这行 @Html.Raw(HttpUtility.HtmlDecode(title))
2. ASP.NET Core 项目
ASP.NET Core里没有System.Web,改用WebUtility.HtmlDecode:
@Html.Raw(System.Net.WebUtility.HtmlDecode(title))
效果说明
解码后,字符串里的&lt;sub&gt;3&lt;/sub&gt;会被还原成<sub>3</sub>,接着Html.Raw()会把这个实体解析成真正的<sub>3</sub>HTML标签,页面就能正确显示出CaSiO₃(下标3)的效果了。
小建议:如果能控制数据源头,最好直接存储<sub>3</sub>这种未被双重转义的内容,这样前端处理会更省心~
内容的提问来源于stack exchange,提问作者user2109581
相关产品推荐
相关产品推荐

