我想提取一些js文件,并仅在一个视图中调用它,这与从_LandingLayout.cshtml模板页面中调用的包分开。
在我的BundleConfig.cs中,我已经
bundles.Add(new ScriptBundle("~/scripts/app/index").Include(
"~/Scripts/App/home.js",
"~/Scripts/App/location.js"
));
和我的观点是这样的:
@{
ViewBag.Title = "Home Page";
Layout = "~/Views/Shared/_LandingLayout.cshtml";
}
<!-- Main Content -->
...some html markup
<!-- End of Main Content -->
@Scripts.Render("~/scripts/app/index")
_LandingLayout.cshtml中的每个css和js文件都正确显示,如果我在_LandingLayout.cshtml中添加“〜/ scripts / app / index”,则它正确显示。
但是,如果要与_LandingLayout.cshtml分开渲染,它将进入js文件home.js,并将整个文件像调试器一样泛黄(我没有在home.js中放入任何调试器),当我进入时F10,出现错误:
0x800a1391-JavaScript运行时错误:“ $”未定义
我已经搜索了此错误,并且I find this 但是,我引用了jQuery lib。
只有这样我才能想到,也许引擎首先呈现了我的代码行:
@Scripts.Render("~/scripts/app/index")
然后再渲染_LandingLayout.cshtml页面中的所有包?
答案 0 :(得分:2)
您需要在其中引用的所有js文件之后在_LandingLayout.cshtml
视图中添加新部分。
例如,我们将在jquery引用后添加名为"ExtraJs"
的部分,如下所示:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
@RenderSection("ExtraJs", false)
然后在您的视图内,您可以参考以下内容
@{
ViewBag.Title = "Home Page";
Layout = "~/Views/Shared/_LandingLayout.cshtml";
}
<!-- Main Content -->
...some html markup
<!-- End of Main Content -->
@section ExtraJs
{
@Scripts.Render("~/scripts/app/index")
}