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

时间:2013-11-20 22:47:41

标签: jquery asp.net-mvc

有没有办法阻止脚本包在特定视图上呈现?我想在大多数视图上默认使用_layout页面及其脚本包。我遇到了一个特定视图的问题,我在使用jQuery网格,并在该视图中包含了我需要的脚本。布局页面中的捆绑包添加了我的网格视图。

2 个答案:

答案 0 :(得分:2)

您可以访问通过ViewContext.RouteData返回视图的操作名称。

查看:

~/Views/MyViews/MyAction.cshtml

动作:

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

以下是您在View中访问Action名称的方法:

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

在渲染Bundle之前检查它:

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

要进一步完善此功能,您可以使用类似的方法检查控制器的名称(如果需要)。

希望这有帮助。

答案 1 :(得分:0)

谢谢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的所有视图,但现在还可以。