Comment puis-je obtenir type de contrôleur et de l'action de l'info à partir d'une url ou à partir de données de la route?

Comment puis-je obtenir le contrôleur de l'action (méthode) et le type de contrôleur qui sera appelé, compte tenu de la System.Web.Routing.RouteData?

Mon scénario est-ce - que je veux être en mesure de faire effectuer certaines actions (ou pas) dans le OnActionExecuting méthode pour une action.

Cependant, j'ai souvent envie de savoir non pas l'action en cours, mais la "racine" de l'action; par cela, je veux dire que je peut avoir une vue appelée "Connexion", qui est ma page de connexion. Ce point de vue peut inclure
une autre vue partielle "LeftNav". Lorsque OnActionExecuting est appelé pour LeftNav, je veux être en mesure de déterminer que c'est vraiment être appelé à la "racine" aciton de Connexion.

Je me rends compte qu'en appelant RouteTable.Routes.GetRouteData(actionExecutingContext.HttpContext), je peux obtenir l'itinéraire de la "racine" de la demande, mais comment la mettre en
la méthode et le type d'info?

La seule solution que j'ai à ce jour, est quelque chose comme:

 var routeData = RouteTable.Routes.GetRouteData(actionExecutingContext.HttpContext)
 var routeController = (string)routeData.Values["controller"]; 
 var routeAction = (string)routeData.Values["action"];

Le problème, c'est que "routeController" est le nom du contrôleur avec le "Contrôleur" suffixe supprimé, et n'est pas pleinement qualifié; c'est à dire c'est "Login", plutôt que "MyCode.Site web.LoginController".

Je serais plutôt d'obtenir une réelle Type et MethodInfo si possible, ou au moins un type pleinement qualifié du nom.

Toutes les pensées, ou d'autres approches?

[MODIFIER - c'est ASP.Net MVC 1.0]

OriginalL'auteur Rob Levine | 2010-04-22