有没有办法阻止脚本包在特定视图上呈现?我想在大多数视图上默认使用_layout页面及其脚本包。我遇到了一个特定视图的问题,我在使用jQuery网格,并在该视图中包含了我需要的脚本。布局页面中的捆绑包添加了我的网格视图。
答案 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的所有视图,但现在还可以。