如何从儿童行动中获得当前的控制者和行动?

我有一部分视图是通过RenderAction调用一个子操作呈现的。 如何从这个子操作中获得父控制器和操作。

当我使用..

@ViewContext.RouteData.Values["action"] 

我找回儿童行动的名称,但我需要的是家长/电话行动。

谢谢

顺便说一句我正在使用MVC 3与剃刀。

如果你想从子动作本身(而不是视图)访问它,你可以使用

 ControllerContext.ParentActionViewContext.RouteData.Values["action"] 

find了…

怎么办-I-得到最的RouteData相关,与最父行动在-A-局部视图

 ViewContext.ParentActionViewContext.RouteData.Values["action"] 

如果部分在另一个部分内,除非find最顶层的父视图内容,否则这将不起作用。 你可以用这个find它:

 var parentActionViewContext = ViewContext.ParentActionViewContext; while (parentActionViewContext.ParentActionViewContext != null) { parentActionViewContext = parentActionViewContext.ParentActionViewContext; } 

我有同样的问题,并提出了与卡洛斯马丁内斯相同的解决scheme,除了我把它变成一个扩展:

 public static class ViewContextExtension { public static ViewContext TopmostParent(this ViewContext context) { ViewContext result = context; while (result.ParentActionViewContext != null) { result = result.ParentActionViewContext; } return result; } } 

我希望这会帮助有同样问题的人。

使用模型绑定来获取操作名称,控制器名称或任何其他url值:

 routes.MapRoute("City", "{citySlug}", new { controller = "home", action = "city" }); [ChildActionOnly] public PartialViewResult Navigation(string citySlug) { var model = new NavigationModel() { IsAuthenticated = _userService.IsAuthenticated(), Cities = _cityService.GetCities(), GigsWeBrought = _gigService.GetGigsWeBrought(citySlug), GigsWeWant = _gigService.GetGigsWeWant(citySlug) }; return PartialView(model); }