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

ASP.NET URL传参时单引号被转义 如何保留原始单引号字符?

问题原因

你遇到的两处转义都是ASP.NET默认安全机制和URL规范导致的:

  • Razor视图中直接使用@Model.example输出内容时,默认会执行HTML编码,所有特殊字符(单引号、双引号、尖括号等)都会被转为HTML实体,因此单引号会变成'
  • URL中的单引号被转为%27是标准URL编码规则,正常情况下ASP.NET后端接收参数时会自动解码回原始单引号。你提到的跳转后URL多了反斜杠变为%5C%27,属于非预期的额外转义,大概率是项目内的全局参数过滤、URL重写规则、中间件或者前端跳转逻辑额外处理导致的。

解决方法

1. 修复JavaScript获取到转义字符的问题

将cshtml中给JS变量赋值的代码改为@Html.Raw(Json.Encode(Model.example)),该方法会先将字符串序列化为合法的JavaScript字符串格式,同时不会执行HTML编码,可以完美保留原始字符,还能避免JS语法错误和XSS注入风险。
修改后的代码如下:

<script type="text/javascript">
   var example = @Html.Raw(Json.Encode(Model.example));
   Main();
</script>

注意不要手动给变量值加双引号,Json.Encode会自动为字符串添加合法的边界引号。如果你使用的是ASP.NET Core,替换为@Json.Serialize(Model.example)即可,用法完全一致。

2. 排查URL额外添加反斜杠的问题

如果确认后端接收到的参数已经多了反斜杠,按以下顺序排查:

  • 项目全局Action过滤器、参数模型绑定逻辑中有没有自动转义特殊字符的处理
  • URL重写规则、反向代理配置有没有对参数做二次编码
  • 触发跳转的前端逻辑中有没有多余的encodeURIComponent调用

修改完成后,你传入的单引号就可以在整个链路中完整保留,和原始值完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 21:06:03