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

ASP.NET MVC中如何避免服务器端字符自动编码至JavaScript?

解决ASP.NET MVC Razor默认字符编码问题

你遇到的这个情况,其实就是Razor视图引擎的@语法默认自动做HTML编码导致的——它会把特殊字符和Unicode字符转成HTML实体,以此防范XSS攻击,但这就导致JS里拿到的不是原始的Côte d'Ivoire,而是转义后的内容。下面给你几个实用的解决办法:

方法1:用Html.Raw()输出原始内容

直接用Html.Raw()包裹Model值,明确告诉Razor不要对这段内容做编码处理:

myFunction('@Html.Raw(Model.ServerUnicodeCharacters)');

这样JS就能直接拿到原始的Unicode字符串了。不过要注意:如果这个Model值来自用户输入的不可信内容,直接用Html.Raw()可能存在XSS风险,这种情况更推荐下面的安全写法。

方法2:结合Json.Encode()处理JS敏感字符

如果字符串里有单引号这类JS语法敏感的字符,Json.Encode()会自动转义这些字符,再配合Html.Raw()避免HTML编码,写法如下:

myFunction(@Html.Raw(Json.Encode(Model.ServerUnicodeCharacters)));

这个写法的优势在于,Json.Encode()会把字符串转换成符合JS语法规范的格式(比如把单引号转成\'),而且不需要你手动加引号——它会自动给字符串套上双引号,既安全又省心。

额外提醒

Razor的默认编码是个安全特性,所以除非你确定内容是完全可信的(比如服务器生成的固定Unicode字符),否则不要随意关闭编码。如果是用户输入的内容,一定要先做验证和清理,再考虑输出方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:16:53