Javascript ASP.NETCoreJS在_布局中工作,但不在正文页面中工作

Javascript ASP.NETCoreJS在_布局中工作,但不在正文页面中工作,javascript,asp.net-core-mvc,Javascript,Asp.net Core Mvc,我是ASP MVC的新手,所以我可能犯了一个新手错误 对于我的网站,我希望在所有页面上都有一个标准化的标题和侧边栏,所以我把它放在了_Layout.cshtml中,效果很好。我的应用程序的主索引页(稍后我将对其进行调整,但由于我刚刚开始,它几乎完全相同,如果这是相关的:)包含许多我可能最终会使用的图形和图表,因此我试图确保它在设置时保持功能 现在,如果我调用一组JS文件,然后从_Layout.cshtml调用一个初始化JS文件,那么所有图表都会毫无问题地加载。然而,我认为这是一种糟糕的做法,因为

我是ASP MVC的新手,所以我可能犯了一个新手错误

对于我的网站,我希望在所有页面上都有一个标准化的标题和侧边栏,所以我把它放在了_Layout.cshtml中,效果很好。我的应用程序的主索引页(稍后我将对其进行调整,但由于我刚刚开始,它几乎完全相同,如果这是相关的:)包含许多我可能最终会使用的图形和图表,因此我试图确保它在设置时保持功能

现在,如果我调用一组JS文件,然后从_Layout.cshtml调用一个初始化JS文件,那么所有图表都会毫无问题地加载。然而,我认为这是一种糟糕的做法,因为我不会在每一页上都有这些图表。因此,我将这些JS文件的导入复制并粘贴到我的内容页中,但奇怪的是,这导致图表无法加载。虽然我可以通过调试器和网络选项卡在控制台中确保上面的每个JS文件都已加载,但我的初始化脚本将失败,因为在上面提到的其中一个文件中找不到函数

我唯一的两个想法是,我加载页面内容的方式有问题,或者在被发现之前,资源有问题。我相信这就是调用内容页所使用的所有代码:

<div>
    <partial name="_CookieConsentPartial" />
    <main role="main" class="pb-3">
        @RenderBody()
    </main>
</div>
// because this page has a <form> that needs client side validation
// jquery validation is dependent on jquery library which we've already loaded
@section Scripts {
    <script src="path_to_jquery_validation"></script>
}

// because I want this page to be dark theme
@section PageStyles{
    <style>
       .theme {background-color: #000;}
    </style>

}
这些总是可以解决的,因为我可以肯定地发现引导是一个加载的资源,但是我想知道,在_布局文件中的脚本是否给了它们更多的时间来解决,并且通过将它们放在实际的内容文件中,它们只是在任何解决之前超时

我似乎找不到任何提到放置JS的不同之处的来源,显然,除了不将专门的资源放入_布局文件的想法之外

编辑
我开始注意到其他一些项目也不起作用,因此我感到沮丧,从_Layout.cshmtl文件中删除了所有JS导入,这似乎解决了所有问题。我想这样分割JS文件的导入是不可能的?

假设我理解,您可以使用
部分
-
@RenderSection(…
)处理“页面特定”资源(JS、CSS)

虽然是针对
Core
,而不是
MVC
,但这并不重要,因为概念是相同的

  • 它们是可以在
    布局中设置的“占位符”
  • 您可以从“内容页”向它们“注入”某些内容
  • 您可以适当地定位这些“占位符”(在
    中,或者脚本通常位于关闭
    标记之前)
摘自上面链接的文档,示例
布局

<html>
   <head>
     <link rel="stylesheet" type="text/css" href="link_to_bootstrap">
     @RenderSection("PageStyles", required: false)
     ....
   </head>
   <body class="theme">
        <div id="main-body">
            @RenderBody()
        </div>

        <script src="path_to_jquery_or_cdn"></script>

        @RenderSection("Scripts", required: false)

    </body>
以上是一个起点。您可以进行更高级的实现,例如
BundleConfig
(css/js的分组/捆绑/缩小/版本控制)和
节的嵌套


Hth.

这看起来正是我所缺少的。我本来以为我可以在内容页中放置标准的JS和CSS引用,并且在引用正文时会对它们进行排序。虽然添加了这些引用,但它们并没有完全发挥作用。将脚本放在一个部分非常有效,谢谢。
// because this page has a <form> that needs client side validation
// jquery validation is dependent on jquery library which we've already loaded
@section Scripts {
    <script src="path_to_jquery_validation"></script>
}

// because I want this page to be dark theme
@section PageStyles{
    <style>
       .theme {background-color: #000;}
    </style>

}