Javascript ASP.NETCoreJS在_布局中工作,但不在正文页面中工作
我是ASP MVC的新手,所以我可能犯了一个新手错误 对于我的网站,我希望在所有页面上都有一个标准化的标题和侧边栏,所以我把它放在了_Layout.cshtml中,效果很好。我的应用程序的主索引页(稍后我将对其进行调整,但由于我刚刚开始,它几乎完全相同,如果这是相关的:)包含许多我可能最终会使用的图形和图表,因此我试图确保它在设置时保持功能 现在,如果我调用一组JS文件,然后从_Layout.cshtml调用一个初始化JS文件,那么所有图表都会毫无问题地加载。然而,我认为这是一种糟糕的做法,因为我不会在每一页上都有这些图表。因此,我将这些JS文件的导入复制并粘贴到我的内容页中,但奇怪的是,这导致图表无法加载。虽然我可以通过调试器和网络选项卡在控制台中确保上面的每个JS文件都已加载,但我的初始化脚本将失败,因为在上面提到的其中一个文件中找不到函数 我唯一的两个想法是,我加载页面内容的方式有问题,或者在被发现之前,资源有问题。我相信这就是调用内容页所使用的所有代码:Javascript ASP.NETCoreJS在_布局中工作,但不在正文页面中工作,javascript,asp.net-core-mvc,Javascript,Asp.net Core Mvc,我是ASP MVC的新手,所以我可能犯了一个新手错误 对于我的网站,我希望在所有页面上都有一个标准化的标题和侧边栏,所以我把它放在了_Layout.cshtml中,效果很好。我的应用程序的主索引页(稍后我将对其进行调整,但由于我刚刚开始,它几乎完全相同,如果这是相关的:)包含许多我可能最终会使用的图形和图表,因此我试图确保它在设置时保持功能 现在,如果我调用一组JS文件,然后从_Layout.cshtml调用一个初始化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>
}