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

.NET5 Razor Pages项目中jQuery仅在Layout.cshtml中生效问题求助

核心问题排查

  • 第一优先级检查Section名称大小写匹配:Razor Pages的@section名称大小写敏感,你的_Layout.cshtml中定义的渲染节点是@RenderSection("Scripts", required: false)(首字母S大写),但子页面index.cshtml中写的是@section scripts(全小写),名称不匹配导致脚本块根本没有被渲染到最终生成的HTML页面中,这是最常见的问题。
  • 检查jQuery资源加载状态:打开浏览器开发者工具的「网络」面板,筛选JS资源,确认jquery.min.js的加载状态为200,不存在404错误。如果出现404,检查wwwroot/lib/jquery/dist目录下是否存在对应文件,或调整脚本引用路径。
  • 检查控制台JS报错:打开浏览器开发者工具的「控制台」面板,确认没有$ is not defined这类报错。你当前的Layout中jQuery引用在Scripts节渲染之前,顺序是正确的,只要Section正确渲染就不会出现该报错。
  • 检查元素绑定逻辑:如果.btn-reply是页面加载完成后动态生成的元素,直接用click绑定不会生效,需要用事件委托写法。

解决方案

1. 修正Section名称

将index.cshtml中的节名称改为和Layout一致的大写开头:

@section Scripts {
    <script>
        // 静态元素可以用原有写法
        $(document).ready(function () {
            $(".btn-reply").click(function (event) {
                alert("it works");
            });
        });

        // 如果是动态生成的元素,替换为事件委托写法
        // $(document).on('click', '.btn-reply', function(event) {
        //     alert("it works");
        // });
    </script>
}

2. 可选优化

你当前Layout中@RenderSection("Head", required: false)放在了body底部的脚本之后,逻辑不合理,建议将这个节点移动到Layout的<head>标签内部,用于渲染子页面需要放在头部的CSS、元标签等内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:48:03