2010-11-26 11 views
0

Je voudrais avoir le type d'itinéraire suivant dans ASP.NET MVC.Est-il possible d'avoir un paramètre comme premier noeud d'une route?

  • {a}/{b} -> SiteController.Search (a, b) (a et b sont des chaînes arbitraires)

tout en ayant un HomeController

  • home/index -> HomeController.Index ()

Est-ce possible? Est-il possible que les routes des contrôleurs nationaux soient codées en dur? -à-dire:

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

Répondre

1

Non, ce n'est pas possible sans enlever la route par défaut parce que le moteur de routage ne peut pas lever l'ambiguïté entre ces deux urls:

foo/bar 
home/index 

En supposant que vous voulez le premier à correspondre {a}/{b} et le second {controller}/{action} . Même si vous codez l'itinéraire comme dans votre exemple, home/index correspondra toujours au premier itinéraire qui est {a}/{b}.

De même si a et peuvent être des chaînes arbitraires, il serait préférable qu'ils soient passés en tant que paramètres de chaîne de requête.