2010-06-22 8 views
1

je l'adresse suivante à l'esprit:MVC omettent page de paramètres en option

/restaurants/italian/miami.html 
/restaurants/italian/miami-p2.html 

L'utilisation de ces routes

routes.MapRoute(null, "{category}/{branch}/{city}-p{page}.html", 
       new { controller = "Branch", action = "Index" }); 
routes.MapRoute(null, "{category}/{branch}/{city}.html", 
       new { controller = "Branch", action = "Index", page = 1 }); 

Maintenant, pour ma question, je veux faire partie "-p {page}" de l'url facultatif, pas seulement le paramètre {page}. De cette façon, je peux utiliser une route unique et l'utiliser également pour mapper les URL sortantes avec Url.RouteUrl(RouteValueDictionary) (qui supprime alors automatiquement la partie de la page si le paramètre page du dictionnaire est 1).

+0

* Pourquoi * ajoutez-vous '.html' à vos routes? Le point entier des routes est de ne pas pointer vers une page physique. –

+0

Mes pensées exactement, mais ce n'est pas ma décision malheureusement – Fabian

Répondre

0

Pour y parvenir i nécessaire 3 itinéraires:

routes.MapRoute(null, "{category}/{branch}/{city}.html", 
       new { controller = "Branch", action = "Index" }, 
       new { page = "1" }); 

routes.MapRoute(null, "{category}/{branch}/{city}-p{page}.html", 
       new { controller = "Branch", action = "Index" }); 

routes.MapRoute(null, "{category}/{branch}/{city}.html", 
       new { controller = "Branch", action = "Index", page = 1 }); 

cette façon, je peux mapper toutes les urls entrant avec la deuxième et la troisième voie et sortant avec la première et seconde.

+0

Espérant toujours qu'il existe une meilleure solution Tho ... – Fabian

1

Je ne suis pas sûr de bien comprendre ce que vous voulez, mais je pense que l'utilisation de regular expression constraint pourrait résoudre votre problème. Peut-être en quelque sorte comme ceci:

routes.MapRoute(null, "{category}/{branch}/{citywithp}{page}.html", 
      new { controller = "Branch", action = "Index" }, 
      new {citywithp = @"p-\d+$" }); 
+0

+1 Ce n'est pas la bonne réponse, mais il m'a fait penser – Fabian

+0

Ok, bien je suis heureux que cela a aidé en quelque sorte ... :) – apolka