Asp.net mvc MVC中基于区域的包
我想为每个区域绑定一个js文件,我能够做到这一点。但是,问题是参考。 我不想在_Layout.cshtml中引用所有区域js,因为它将加载所有区域js文件 我可以根据区域更改js,但是我们的_布局只会从那里加载一次,这只是ajax调用Asp.net mvc MVC中基于区域的包,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我想为每个区域绑定一个js文件,我能够做到这一点。但是,问题是参考。 我不想在_Layout.cshtml中引用所有区域js,因为它将加载所有区域js文件 我可以根据区域更改js,但是我们的_布局只会从那里加载一次,这只是ajax调用 在我的例子中,哪一个地方是正确的js区域?这是部分的目的: _Layout.cshtml <head> @RenderSection("head", false) ... </head> 请注意,
在我的例子中,哪一个地方是正确的js区域?这是部分的目的: _Layout.cshtml
<head>
@RenderSection("head", false)
...
</head>
请注意,在MVC框架中首先呈现子视图,因此如果此视图中有javascript,则将在布局之前开始执行。因此,始终使用文档加载事件或窗口就绪,如果它依赖于布局中引用的脚本,则自执行代码将失败
或者您可以尝试以下方法:
将您所在的区域存储在ViewModel中的某个位置,我将使用ViewBag作为示例。然后为每个注册包的区域创建一个单独的脚本包。然后你可以做类似的事情
@Bundle.Scripts.Add("/scripts/" + ViewBag.Area + "/myscripts");
在布局页面中包含js文件时。。。您可以使用case语句并指定您所在区域的in-case语句,并根据布局页面中的区域相应地包含js…不-不要这样做,我会得到答案(这会起作用)但是在视图中使用条件格是不可取的。我不想在子视图中引用它。我只想在一个区域中引用一次。我在_viewstart中尝试过,但没有成功。
@Bundle.Scripts.Add("/scripts/" + ViewBag.Area + "/myscripts");