2014-09-24 16 views
14

Sto tentando di reindirizzare tutti gli URL che non corrispondono a un controller esistente a un determinato controller.Instradamento mvc di Asp.net senza controller o nome azione

Ad esempio, il mywebsite.com/newyork URL deve essere elaborato come mywebsite.com/Cities/Info/newyork

Sto usando il seguente codice nel mio RegisterRoutes ma non sembra funzionare come ho ottenere un 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= "" } 
     ); 

risposta

18

si dovrebbe mettere la tua città itinerario prima e rilasciare il parametro predefinito vuoto:

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 } 
    ); 

I percorsi vengono elaborati in ordine così si dovrebbe avere più specifico prima al meno specifico (il percorso predefinito).

Poiché il tuo sito web.com/newyork corrisponde al percorso predefinito, non stava continuando il percorso della tua città.

Problemi correlati