有没有办法防止脚本捆绑包在特定视图上渲染?默认情况下,我希望在大多数视图上使用_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的所有视图,但目前还可以。