2010-09-19 14 views
0

J'essaie de documenter toutes les actions de mon application Web, et l'une des choses que je veux faire est de fournir un exemple d'URL pour une action.URL du nom de la méthode d'action ou MethodInfo ou quelque chose, ou liste des routes d'action

Existe-t-il un moyen de répertorier toutes les actions d'un site Web avec leurs itinéraires, ou peut-être un moyen de trouver l'itinéraire à partir d'un MethodInfo?

Je pense que je pourrais avoir à écrire un attribut personnalisé pour chaque action pour spécifier des valeurs factices à utiliser pour les actions avec des paramètres.

Répondre

1

Vous pouvez facilement obtenir toutes les actions utilisant la réflexion:

var actions = 
    from controller in Assembly.GetExecutingAssembly().GetTypes() 
    where typeof(Controller).IsAssignableFrom(controller) 
    from action in controller.GetMethods() 
    where typeof(ActionResult).IsAssignableFrom(action.ReturnType) 
    select new { Controller = controller, Action = action }; 

Adapt pour inclure les assemblées qui vous intéressent

+0

Yep, a que jusqu'à présent.. Je suis en quelque sorte coincé sur la façon dont je devrais utiliser cela pour créer une URL. –

+1

J'ai donc fini par faire cela et j'ai créé un UrlExampleArgumentsAttribute qui prend un tableau param de valeurs de route à envoyer à Url.Action(). Pas sûr que ce soit correct, mais ça marche. –

+0

Bonne réflexion, Rei. J'aime ça. :) – Jonathan