Obtenir le contrôleur actuel et l’action dans une vue partielle

J’utilise ce qui suit pour obtenir le contrôleur actuel et l’action dans asp.net MVC3:

var currentAction = routeData.GetRequiredSsortingng("action"); var currentController = routeData.GetRequiredSsortingng("controller"); 

Cela fonctionne parfaitement. Toutefois, si j’appelle cela depuis une vue partielle appelée depuis ma présentation, “Layout” est renvoyé en tant que contrôleur actuel. Ceci est bien sûr correct, mais existe-t-il un moyen d’accéder au nom du contrôleur parent?

Modifier pour plus de précision:

J’appelle mon contrôleur de menu et une vue partielle à partir de _Layout.cshtml:

 @Html.Action("Menu", "Layout") 

Ensuite, à partir de cette vue partielle du menu, j’appelle un code qui renvoie l’action et le contrôleur actuels.

Après votre question mise à jour et l’affichage de votre code, il est beaucoup plus clair: vous n’incluez pas une vue partielle. Vous appelez une action enfant. Il y a une énorme différence entre Html.Partial et Html.Action . Donc, si vous voulez obtenir le contexte parent dans cette action enfant, vous pouvez faire ceci:

 public ActionResult Menu() { var rd = ControllerContext.ParentActionViewContext.RouteData; var currentAction = rd.GetRequiredSsortingng("action"); var currentController = rd.GetRequiredSsortingng("controller"); ... return View(); } 

Je suis tombé sur cette page à la recherche d’un moyen d’accéder au nom du contrôleur parent après un appel via Partial

 @Html.Partial("Paging") 

Ceci peut être fait dans la vue partielle comme

 @{ var controller = ViewContext.RouteData.GetRequiredSsortingng("controller"); var action = ViewContext.RouteData.GetRequiredSsortingng("action"); }