Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery MVC4阻止脚本包在特定视图上呈现_Jquery_Asp.net Mvc - Fatal编程技术网

Jquery MVC4阻止脚本包在特定视图上呈现

Jquery MVC4阻止脚本包在特定视图上呈现,jquery,asp.net-mvc,Jquery,Asp.net Mvc,有没有办法防止脚本包在特定视图上呈现?默认情况下,我想在大多数视图上使用_布局页面及其脚本包。我在使用jQuery网格的特定视图中遇到了问题,并且在该视图中包含了我需要的脚本。从布局页面添加的包正在破坏我的视图和网格 您可以通过ViewContext.routedData访问返回视图的操作的名称 视图: 行动: public ActionResult MyAction() { return View(); } 下面是如何从视图中访问操作名称: string currentAction

有没有办法防止脚本包在特定视图上呈现?默认情况下,我想在大多数视图上使用_布局页面及其脚本包。我在使用jQuery网格的特定视图中遇到了问题,并且在该视图中包含了我需要的脚本。从布局页面添加的包正在破坏我的视图和网格

您可以通过
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";
}