2009-05-14 8 views
0

J'ai une liste d'actions sur divers contrôleurs qui sont des fonctions 'Admin' (créer, mettre à jour, supprimer) mais d'autres actions sur ces mêmes contrôleurs ne sont pas des actions d'administration. Ce que je veux faire est de créer un itinéraire qui préfixera /Admin/ avant toutes les URL qui appellent une action qui ont l'attribut de filtre Authorize.Créer une route Route qui applique uniquement une route lorsque l'action a un filtre d'action particulier

Est-ce encore possible?

Répondre

0

Oui tout est possible, mais je pense que ce que vous voulez dire est-il facile à faire? Et la réponse est non. Ce que vous avez à faire est de créer votre propre route, puis d'ajouter cette route personnalisée au mappage d'itinéraire. Ce n'est pas difficile à faire, mais le problème vient du fait que les routes sont initialisées avant le contrôleur, donc vous devrez gérer la recherche et la réflexion vous-même pour vérifier vos critères.

Il existe une option alternative, vous pouvez essayer d'utiliser ActionMethodSelectorAttribute qui vous permet de créer des sélecteurs personnalisés pour vos méthodes d'action et d'ignorer ceux qui ne contiennent pas l'attribut Authorize. Un exemple de cet attribut utilisé est ActionVerbAttribute. Le moyen le plus simple est de créer simplement une extension personnalisée pour Html.ActionLink qui effectue ses propres vérifications et la conserve comme seule chose d'affichage, puis crée des routes doubles pour le même contrôleur dans votre Global.asax.