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

在_Layout.cshtml中通过@section Scripts引入Angular文件仅首页生效,如何解决?

解决_Layout.cshtml中全局引入Layout.js仅在部分页面生效的问题

我来帮你理清这个问题的根源和解决办法:

问题出在哪?

你在_Layout.cshtml里直接写了@section Scripts{...},这其实搞反了母版页和子页面的section用法。@section是子页面用来向母版页指定区域填充内容的语法,而母版页需要用@RenderSection来声明一个可被填充的占位区域。

之前只有Index页面生效,大概率是因为Index页面没有自己定义@section Scripts,所以母版页里的这个section内容被默认渲染了;而Course页面自己定义了@section Scripts(哪怕是空的),就覆盖了母版页里的这部分内容,导致Layout.js没被加载。

正确的实现方式

根据你的需求(让Layout.js在所有基于该布局的页面都加载),有两种简单的方案:

方案1:直接在_Layout.cshtml中全局引入(推荐)

不需要用section,直接把脚本标签放在_Layout.cshtml的合适位置(比如</body>标签前),这样所有使用这个布局的页面都会自动加载它:

<!-- 在_Layout.cshtml的body结束前添加 -->
<script src="~/Angular_Files/Layout.js"></script>
<!-- 保留子页面的Scripts占位符(如果需要子页面添加额外脚本) -->
@RenderSection("Scripts", required: false)
</body>

方案2:确保所有子页面都继承母版页的Scripts内容

如果你一定要用section的方式(比如需要动态控制),可以修改母版页的RenderSection逻辑,让子页面的Scripts内容和母版页的合并:

  1. 先在_Layout.cshtml里定义基础脚本,然后用RenderSection允许子页面追加内容:
<script src="~/Angular_Files/Layout.js"></script>
@RenderSection("Scripts", required: false)
  1. 对于需要添加额外脚本的子页面(比如Course.cshtml),在自己的@section Scripts里添加内容即可,母版页的Layout.js依然会加载:
@section Scripts{
    <!-- 子页面的额外脚本 -->
    <script src="~/Angular_Files/Course.js"></script>
}

这样不管哪个子页面,都会先加载母版页里的Layout.js,再加载子页面自己的脚本(如果有的话)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:28:13