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

ASP.NET中如何将C#字符串正确转换为原生JavaScript代码

解决Razor输出JS代码时的编码问题

这问题我之前也踩过坑,Razor的默认编码机制确实容易在这里闹乌龙。直接给你靠谱的解决方案:

  • 用@Html.Raw(data)替代@data或者@HttpUtility.JavaScriptStringEncode(data),就能输出你想要的原生JS代码格式。

为什么之前的方法都不对?

  1. 直接用@data:Razor默认会对输出内容做HTML编码,把单引号这类特殊字符转换成HTML实体(比如'变成')——这是Razor的安全保护机制,但直接破坏了你原本的JS代码结构。
  2. HttpUtility.JavaScriptStringEncode:这个方法的定位是把普通字符串转换成合法的JavaScript字符串字面量,所以它会把单引号转成Unicode转义序列\u0027。这适合你要把一段文本赋值给JS变量的场景,但你的data本身就是一段可执行的JS代码,完全不需要这种转义。

示例代码

@{ 
    var data = "dataTable.addRow(['Text', 1, 2])"; 
}

在JavaScript代码块里这样调用:

@Html.Raw(data);

输出结果就是你想要的原生格式:

dataTable.addRow(['Text', 1, 2]);

重要安全提醒

Html.Raw会跳过所有编码校验,所以**只有当你100%确定data的内容是安全可信的(比如是自己硬编码的、或者经过严格过滤的内容)**才能使用。如果data来自用户输入或其他不可信来源,直接用Html.Raw会有XSS攻击的风险,这时候得重新梳理你的实现逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:44:13