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

为什么ASP.NET Webform不识别jQuery代码并报CS1056意外字符'$'错误

问题原因

CS1056属于C#编译错误,出现该报错的核心原因是你当前的脚本引入写法错误,导致ASP.NET服务器端运行时将你的JavaScript文件识别为C#代码尝试编译,$作为jQuery的标识符在C#语法中属于非法字符,因此触发报错。你当前写法有两个明显错误:

  • 不能直接在<asp:ScriptManager>的<Scripts>子节点内放置普通<script>标签,所有通过ScriptManager托管的脚本都需要用<asp:ScriptReference>节点声明
  • 给普通JS引入标签添加了runat="server"属性,同时未使用站点根路径标识~,也会导致路径解析异常

解决步骤

1. 修正母版页的脚本引入写法

将你ScriptManager内站点脚本区域的原有代码替换为如下写法:

<%--Site Scripts--%>
<asp:ScriptReference Path="~/Scripts/MyScripts/LogicMain.js" />

2. 调整JS代码的执行时序

为了确保jQuery加载完成后再执行你的业务代码,推荐将LogicMain.js内的代码包裹在DOM加载完成的回调中:

// 标准jQuery DOM加载完成回调
$(function() {
    // 你的业务代码写在这里,替换下面的测试代码
    alert("脚本加载正常");
});

如果存在异步回发后脚本不生效的场景,也可以使用Web Forms专属的客户端加载事件:

Sys.Application.add_load(function () {
    // 你的业务代码,同步加载、异步回发后都会触发执行
});

3. 备选引入方案(不需要ScriptManager托管的场景)

如果你不需要ScriptManager对你的自定义脚本做打包、合并等处理,也可以直接将脚本引入代码放到ScriptManager标签外、</form>闭合标签之前,写法如下:

</asp:ScriptManager>
    <script src="~/Scripts/MyScripts/LogicMain.js"></script>
</form>

验证

修改完成后重新编译运行站点,所有引用该母版页的页面都会自动加载执行你的自定义JS脚本,不会再出现CS1056报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:42:02