当我试图在ASP.NETCore6MVC中链接我的.cshtml
文件和JavaScript引用时,我遇到了一个问题。
到目前为止,我已经创建了一个webpack设置,它在一个名为home.sources.cshtml
的单独文件中生成我的JavaScript标记:
@section Scripts
{
<script src="/js/npm.popperjs.bundle.js"></script>
<script src="/js/npm.jquery.bundle.js"></script>
<script src="/js/npm.bootstrap.bundle.js"></script>
<script src="/js/home.bundle.js"></script>
}
正如您所看到的,我的标签被封装在Scripts
部分中。所有这些依赖项都是针对我的View/Home/Index.cshtml
页面的:
@{
ViewData["Title"] = "Home Page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p class="test">Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
// Insert Script Section here
我想让home.sources.cshtml
的内容在运行时附加到此页面。我不想自己手动添加脚本部分,也不想在以后添加更多JavaScript依赖项时修改页面。我添加或删除的任何额外JavaScript依赖项的更改都只会反映在home.sources.cshtml
中。
我该怎么做呢?
我正在查看@Html.Partial()
,试图将Script
部分作为部分视图添加到页面中,但似乎不起作用。
3条答案
按热度按时间fkaflof61#
我真的会做一个partial,因为它看起来更干净。所以我有一个partial,名为_ScriptsPartial,里面有我需要的所有js。
然后我把它用在我的布局中,就像这样,我做了很多局部
这看起来还可以:)
omjgkv6w2#
如果我理解你在这里做什么的话,这是一种非常奇怪的添加脚本引用的方式。
通常在MVC中,您会在布局页面中看到几行代码,如下所示:
它们指的是App_Start -〉BundleConfig.cs中的一组包
这是将.js文件添加到运行时页面的标准方法。
kknvjkwl3#
谢谢Jonespopolis给我这个方法。
实际上,我需要做的是创建一个Layout模板文件,指定我正在使用的是我已经使用过的现有Layout文件,并声明所有JS标记的位置。例如,下面是我的模板文件:
此模板文件引用了我的原始
_Layout.cshtml
文件:@await RenderSectionAsync("Scripts", required: false)
行将呈现我在模板文件中创建的Script节。从那里,我使用Webpack的Htmlwebpackplugin,配置如下:
运行
webpack
命令将得到一个包含模板文件中所有内容的home.source.cshtml
文件,但它显示了home.cshtml
所需的实际JS引用。剩下的就是通过在文件开头插入以下内容,使该文件成为页面的布局:运行应用程序后,我会看到一个主页,上面下载了所有正确的JS标签!现在,如果我改变了我的JS依赖项,我再也不需要担心生成标签或将标签插入页面,因为所有这些都已经自动化了,这正是我想要的!