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

Razor类库中JavaScript未执行问题排查求助

.NET Core MVC引用Razor类库后视图Scripts区块JS不执行的解决方法

问题场景

主Web应用(TestRCL,.NET Core MVC)已引用名为Books的Razor类库,且在Program.cs中配置了区域路由:

app.UseEndpoints(endpoints =>
{
    endpoints.MapAreaControllerRoute(
        name: "shop-default",
        areaName: "Books",
        pattern: "Books/{controller=Home}/{action=Index}/{id?}");
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

访问http://localhost/Books/Home/Index可正常加载视图,但视图中@section Scripts区块内的JavaScript代码未执行,视图代码如下:

<div class="container shadow p-5">
    TEST
</div>

@section Scripts{
    <script type="text/javascript">
            console.log("Test")
    </script>
}

问题原因

Razor视图中的@section区块内容需要布局页通过RenderSectionAsync(或RenderSection)调用才能被渲染到最终HTML中。如果主应用的布局页(或当前视图使用的布局)未定义对应Scripts区块的渲染逻辑,该区块的JS代码不会被输出到页面,自然无法执行。

解决方案

1. 确保布局页包含Scripts区块渲染代码

打开主应用的布局文件(通常是Views/Shared/_Layout.cshtml),在</body>标签前添加以下代码:

@await RenderSectionAsync("Scripts", required: false)
  • required: false表示允许视图不提供Scripts区块,若设为true则所有使用该布局的视图必须定义Scripts区块。
  • 如果你的视图指定了自定义布局(比如通过Layout = "_CustomLayout";),需确保该自定义布局页也包含上述代码。

2. 检查视图是否取消了布局

如果视图中手动设置了Layout = null;,会完全禁用布局,此时@section区块会失效。解决方式:

  • 移除Layout = null;配置,使用默认或指定的布局页;
  • 若必须无布局,直接将JS代码写在视图的<script>标签中,无需放在@section内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 05:52:41