2014-09-24 7 views
14

Ich versuche, alle URLs, die nicht mit einem vorhandenen Controller zu einem bestimmten Controller übereinstimmen.Asp.net MVC Routing ohne einen Controller oder Aktion Name

Zum Beispiel sollte die URL mywebsite.com/newyork als mywebsite.com/Cities/Info/newyork verarbeitet werden

ich in meinem RegisterRoutes des folgenden Code verwenden, aber es scheint nicht, als ich zur Arbeit erhalten einen 404 reponse:

 routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
     routes.MapRoute(
      name: "Cities", 
      url: "{cityname}", 
      defaults: new { controller = "Cities", action = "Info", cityname= "" } 
     ); 

Antwort

18

Sie sollten zuerst Ihre Städte Route setzen und den leeren Standardparameter fallen:

routes.MapRoute(
     name: "Cities", 
     url: "{cityname}", 
     defaults: new { controller = "Cities", action = "Info" } 
    ); 
    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 

die Routen, um verarbeitet werden, so dass Sie sollten spezifischste zuerst bis am wenigsten spezifisch (Ihre Standardroute).

Da Ihre Website.com/newyork der Standardroute entspricht, wurde sie nicht auf Ihrer Stadtroute fortgesetzt.