2010-11-26 7 views
0

Ich möchte die folgende Art von Route in ASP.NET MVC haben.Ist es möglich, einen Parameter als ersten Knoten einer Route zu haben?

  • {a}/{b} -> SiteController.Search (a, b) (wobei a und b beliebige Zeichenketten sind)

Während noch ein Homecontroller mit

  • home/index -> HomeController.Index ()

Ist das möglich? Ist es möglich, dass die Routen der Heim-Controller fest codiert sind? dh:

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

Antwort

1

Nein, das ohne Entfernen der Standardroute nicht möglich ist, weil die Routing-Engine zwischen diesen beiden Urls nicht eindeutig machen kann:

foo/bar 
home/index 

Sie die ersten {a}/{b} wollen Unter der Annahme, und die zweite {controller}/{action} anzupassen . Auch wenn Sie die Route fest codieren, wie in Ihrem Beispiel home/index wird immer die erste Route entsprechen, die {a}/{b} ist.

Auch wenn a und b beliebige Zeichenfolgen sein können, wäre es besser, wenn sie als Abfragezeichenfolgenparameter übergeben würden.

Verwandte Themen