我使用以下代码来获取asp.net MVC3中的当前控制器和操作:
var currentAction = routeData.GetRequiredString("action");
var currentController = routeData.GetRequiredString("controller");
这个可以完美地工作。然而,如果我从我的布局中调用的局部视图中调用它," layout“将作为当前控制器返回。这当然是正确的行为,但是有没有办法访问父控制器的名称呢?
有关进一步说明的编辑:
我在_Layout.cshtml
中调用我的菜单控制器和部分视图
@Html.Action("Menu", "Layout")
然后,在菜单部分视图中,我调用返回当前操作和控制器的代码。
发布于 2011-06-19 03:14:43
在更新问题并显示代码之后,事情就清楚多了:您没有包含部分视图。您正在调用子操作。Html.Partial
和Html.Action
之间有很大的不同。因此,如果您想要获取该子操作中的父上下文,可以这样做:
public ActionResult Menu()
{
var rd = ControllerContext.ParentActionViewContext.RouteData;
var currentAction = rd.GetRequiredString("action");
var currentController = rd.GetRequiredString("controller");
...
return View();
}
发布于 2012-07-25 21:33:03
我偶然发现了这个页面,希望在调用Partial后找到访问父控制器名称的方法
@Html.Partial("Paging")
这可以在局部视图中完成,如下所示
@{
var controller = ViewContext.RouteData.GetRequiredString("controller");
var action = ViewContext.RouteData.GetRequiredString("action");
}
https://stackoverflow.com/questions/6398189
复制相似问题