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"); }