2010-11-02 5 views
4

J'ai cherché en ligne une réponse à cette question, mais honnêtement, je n'arrive pas à trouver une bonne référence pour les routes MVC.Routes ASP.NET MVC: Comment définir une route personnalisée

J'ai un UserController pour mes objets Utilisateur. On peut éditer, enregistrer, afficher, etc. sur l'utilisateur, donc j'ai des actions dans ce contrôleur pour gérer chacun d'entre eux. C'est tout simple. Mais j'ai récemment créé un nouvel objet UserProfile que l'on peut aussi éditer, voir, etc. Plutôt que de créer un tout nouveau contrôleur juste pour UserProfile, je voudrais utiliser le UserController existant. Donc, pour voir le profil d'un utilisateur, je voudrais l'URL à:

http://www.example.com/User/Profile/{userProfileID} 

Et pour modifier, je voudrais l'URL à:

http://www.example.com/User/Profile/Edit/{userProfileID} 

Chacune de ces actions dans le UserController retournera une page de vue différente.

Comment pourrais-je définir les routes pour gérer cette structure? Merci beaucoup.

Répondre

11

Dans votre fichier Global.asax dans la méthode RegisterRoutes() procédez comme suit:

routes.MapRoute(
    "ProfileRoute", 
    "User/Profile/{action}/{userProfileID}", 
    new { controller = "User", action = "Index" }); 

Comme indiqué par les commentaires ... cela doit venir avant que la route par défaut.

+3

Aussi, en tant que FYI depuis qu'il m'a attrapé, il doit être déclaré avant la route par défaut –

+0

Très bon point ... édité ma réponse. – Dismissile

+0

Cette route ressemble donc à celle de/User/Profile/Edit/{userProfileID}, car je peux avoir une action dans le UserController de Edit, mais qu'en est-il de simplement voir le profil? N'aurai-je pas besoin d'écrire une méthode d'action appelée View ou quelque chose pour pouvoir faire ça? Comment aurais-je simplement/User/Profile/{userProfileID}? De plus, pour pouvoir gérer le cas d'édition, quelle action doit être appelée dans l'UserController, étant donné l'itinéraire personnalisé? Cela ressemble à "Index", mais comment pourrais-je l'appeler "Edit"? –