MVC 4阻止脚本绑定在特定视图上呈现



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

您可以通过ViewContext.RouteData访问返回View的Action的名称。

视图:

~/Views/MyViews/MyAction.cshtml

行动:

public ActionResult MyAction()
{
    return View();
}

以下是您如何从视图中访问Action名称:

string currentAction = ViewContext.RouteData["action"].ToString();

在呈现捆绑包之前进行检查:

@if(currentAction != "MyAction")
{
    @Scripts.Render(/* your script bundle here... */)
}

为了进一步完善这一点,如果需要,您可以使用类似的方法来检查控制器的名称

希望这能有所帮助。

谢谢kehrk。我所做的是创建另一个没有Scripts.Render部分的布局页面,_LayoutPCA,并修改了类似于您的代码的_ViewStart页面,如下所示:

  string currentController = ViewContext.RouteData.Values["controller"].ToString();
if(currentController == "PCA")
{
    Layout = "~/Views/Shared/_LayoutPCA.cshtml";
}
else
{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

通过这种方式,我可以仅为此控制器加载_LayoutPCA,并为其余视图加载默认布局页面。这当然会影响PCAController的所有视图,但目前还可以。

最新更新