2010-11-20 8 views
0

Quelles sont les meilleures pratiques pour configurer des projets avec plusieurs interfaces dans asp.net MVC2? Je commence un projet où nous avons besoin d'un arrangement typique comme:Structure d'URL Asp.net MVC2 - meilleures pratiques

example.com/ - Interface utilisateur final

example.com/Admin/ - Gestion du site

Le site sera assez impliqué Le simple fait d'avoir toute la logique utilisateur dans HomeController et toute la logique d'administration dans AdminController n'est pas vraiment une option. J'ai lu sur l'utilisation de plusieurs définitions de route, mais ce qui suit ne semble pas fonctionner correctement:

routes.MapRoute(
      "Admin", // Route name 
      "Admin/{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Admin", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

Il provoque tous les liens sur la page d'accueil pour pointer vers example.com/Admin/local-part au lieu de example.com/local-part.

Je souhaite éviter de spécifier un MapRoute différent pour chaque contrôleur Admin (en omettant {controller} du mappage à chaque fois).

J'ai également lu sur la mise en place de différentes zones dans un projet, mais il semble que ce soit trop impliqué pour la portée de ce projet. Enfin, j'ai aussi lu que vous pouvez mettre des contraintes sur MapRoutes, mais la documentation sur cette partie semble confuse pour moi. Y a-t-il quelque chose d'évident qui me manque? A défaut, y a-t-il des bonnes pratiques pour la structure asp.net que je devrais garder à l'esprit?

Répondre

2

Il semble que Area's soit prêt pour ce que vous voulez faire. Mettre en place un area n'est pas vraiment tout ce qui concerne, il suffit de l'enregistrer. Par défaut, le routage de zone correspond à la valeur par défaut dans global.asax, l'exception étant le slug "\ area" supplémentaire dans l'URL. Je suis à peu près certain qu'il ne m'a fallu que quelques minutes pour mettre en place un projet il y a quelques mois.

Si votre contrôleur d'administration est suffisamment compliqué pour dépasser la portée d'un seul contrôleur, cela indique qu'une zone peut être garantie.