捆绑基于MVC中的区域

时间:2014-11-11 03:48:46

标签: asp.net-mvc asp.net-mvc-5

我想为每个区域捆绑一个js文件,我能够做到。但是,问题是要参考。 我不想在_Layout.cshtml中引用所有区域js,因为它将加载所有区域的js文件。

我可以根据区域更改js但我们的_layout只会从那里加载一次只有ajax调用。

在我的案例中哪个地方明智地引用了js区域?

1 个答案:

答案 0 :(得分:1)

这是以下部分:

_Layout.cshtml

   <head>
          @RenderSection("head", false)
     ...
   </head>

false参数表示不需要,在这种情况下就是你想要的。

然后在您的子视图中

      @section head{
        @Bundle.Scripts.Add("my scripts location");
      }

请注意,子项首先在MVC框架中呈现,因此如果在此视图中有javascript,它将在布局之前开始执行。所以总是使用Document Load事件或Window Ready,如果依赖于Layout中引用的脚本,自执行代码将失败

或者您可以尝试这样的事情:

将您所在的区域存储在ViewModel中的某个位置,我将仅使用ViewBag作为示例。然后在注册捆绑包时为每个区域创建单独的脚本包。然后你可以做类似

的事情
  @Bundle.Scripts.Add("/scripts/" + ViewBag.Area + "/myscripts");