为什么捆绑中的自定义js无法在自定义视图MVC5中显示

时间:2019-05-13 08:52:14

标签: javascript jquery asp.net-mvc

我想提取一些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页面中的所有包?

1 个答案:

答案 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")
}