Jquery MVC4阻止脚本包在特定视图上呈现
有没有办法防止脚本包在特定视图上呈现?默认情况下,我想在大多数视图上使用_布局页面及其脚本包。我在使用jQuery网格的特定视图中遇到了问题,并且在该视图中包含了我需要的脚本。从布局页面添加的包正在破坏我的视图和网格 您可以通过Jquery MVC4阻止脚本包在特定视图上呈现,jquery,asp.net-mvc,Jquery,Asp.net Mvc,有没有办法防止脚本包在特定视图上呈现?默认情况下,我想在大多数视图上使用_布局页面及其脚本包。我在使用jQuery网格的特定视图中遇到了问题,并且在该视图中包含了我需要的脚本。从布局页面添加的包正在破坏我的视图和网格 您可以通过ViewContext.routedData访问返回视图的操作的名称 视图: 行动: public ActionResult MyAction() { return View(); } 下面是如何从视图中访问操作名称: string currentAction
ViewContext.routedData
访问返回视图的操作的名称
视图:
行动:
public ActionResult MyAction()
{
return View();
}
下面是如何从视图中访问操作名称:
string currentAction = ViewContext.RouteData["action"].ToString();
并在呈现捆绑包之前进行检查:
@if(currentAction != "MyAction")
{
@Scripts.Render(/* your script bundle here... */)
}
为了进一步完善这一点,如果需要,可以使用类似的方法检查控制器的名称
希望这有帮助。谢谢kehrk。我所做的是在没有脚本的情况下创建另一个布局页面。渲染部分,\u LayoutPCA并修改了与代码类似的\u ViewStart页面,如下所示:
string currentController = ViewContext.RouteData.Values["controller"].ToString();
if(currentController == "PCA")
{
Layout = "~/Views/Shared/_LayoutPCA.cshtml";
}
else
{
Layout = "~/Views/Shared/_Layout.cshtml";
}
通过这种方式,我可以仅为此控制器加载_LayoutPCA,并为其余视图加载默认布局页面。这当然会影响PCA控制器的所有视图,但目前还可以。您可以从控制器构造函数访问捆绑包吗..我对捆绑不太了解,但如果您能够访问,请使用空源覆盖bundleconfig。捆绑包位于我的_布局页面中,默认情况下,我的所有视图都包括该_布局页面,因此我不确定超控会有用的。谢谢你的帮助。因为在我的布局页面中有@Scripts.Render,所以即使我的视图中有此代码,它也会呈现脚本。如果我从我的布局页面中删除脚本渲染,那么我需要将脚本添加回所有其他视图中。当我从视图中删除_layout页面时,我会像layout=null那样进行操作;我希望在这个视图上的脚本呈现也能有类似的效果。别忘了选择适合你的答案。很高兴我能帮忙。
string currentController = ViewContext.RouteData.Values["controller"].ToString();
if(currentController == "PCA")
{
Layout = "~/Views/Shared/_LayoutPCA.cshtml";
}
else
{
Layout = "~/Views/Shared/_Layout.cshtml";
}