2012-08-12 4 views
1

J'espère que c'est une meilleure façon d'écrire la route dans MVC 4 et aimerait avoir des commentaires. Pourriez-vous me dire si les modèles de routage ci-dessous sont la meilleure façon de le faire dans MVC 4?Comment faire pour router contrôleur dynamique/Action Pattern dans MVC 4 -Routage pour ASP.net MVC 4

J'ai une application qui a besoin d'afficher l'URL dans le format suivant.

http://domain.com/777-777-7777-777-7777/Page1

http://domain.com/777-777-7777-777-7777/Page2

Le 777-777-7777-777-7777 est un numéro de compte. PageX est le numéro de page du rapport. J'essaie d'éviter d'annuler d'autres routes de contrôleur dans mon projet. Ci-dessous est ce que j'ai essayé, mais besoin de commentaires si cela va jeter les futurs contrôleurs.

Rapport numéro ainsi que la page itinéraire

routes.MapRoute( 
"Report", // Route name 
"{AccountNumber}/{ReportPage}",   
new { controller = "Report", action = "Navigate", AccountNumber =  UrlParameter.Optional, ReportPage = UrlParameter.Optional}); 

Future Controller Je ne veux pas à la poubelle.

routes.MapRoute( 
"FutureController", // Route name 
"FutureController/{action}/{id}",   
new { controller = "FutureController",id= UrlParameter.Optional}); 

Tout commentaire est apprécié.

Répondre

0

Je crois que les routes ur sont OK. Il ne va pas rompre avec la configuration actuelle. La seule chose à retenir lors de l'écriture des routes est que vous mettez d'abord des routes plus spécifiques car elles sont traitées dans l'ordre et la première route correspondante est sélectionnée par le moteur d'URL. Je dois cependant dire que votre paramètre ReportPage contient des valeurs comme page1 et page1 au lieu du numérique 1 ou 2. J'ai vu quelqu'un écrire des règles où seule la partie numérique serait reçue dans le résultat de l'action. Pour autant que je me souvienne, il était quelque chose comme

routes.MapRoute( 
"Report", // Route name 
"{AccountNumber}/page{ReportPage}", 
new { controller = "Report", action = "Navigate", AccountNumber =  UrlParameter.Optional, ReportPage = UrlParameter.Optional},new{ReportPage = "\d+"}); 

De cette façon, vous aurez urls comme http://domain.com/account/page1 mais dans les méthodes d'action, vous recevrez les valeurs numériques pour le paramètre ReportPage. Cependant, il ne correspondrait pas lorsque le numéro de page est absent. Pour ce scénario, vous pouvez ajouter une autre route comme le gars recommandé en réponse à this question

+0

Merci Muhammad, Savez-vous si MVC 4 a de meilleurs moyens d'écrire cela? –

+0

our routes r ok. rappelez-vous la règle: mettez d'abord des URL plus spécifiques –