2013-04-05 18 views
12

Sto utilizzando ASP.NET MVC 4 e ho qualche problema con le impostazioni sui miei percorsi. Potrebbe dire al mio come impostare miei percorsi per puntare gli URL per le azioni nel modo seguente:Instradamento con e senza nome controller in ASP.NET MVC 4

  • "/" (o "/ Start") => PublicController.Start()
  • "/ A proposito di" => PublicController.About()
  • "/ MyPage" (o "/ MyPage/Sintesi") => MyPageController.Summary()
  • "/ MyPage/Fatture" => MyPageController.Invoices()
  • "/ MyPage/Invoice/72 "=> MyPageController.Invoice (int id)

È l'url "/ About" che mette a posto le cose per me, cioè un URL che non specifica il controller. Se faccio in modo che quello funzioni, gli altri che specificano il controller smettono di funzionare. Potrei semplicemente creare un controller separato per "/ About", credo, ma preferirei non se non dovessi farlo (ho più url che seguono questo schema).

risposta

28

Questo dovrebbe farlo:

routes.MapRoute(
    name: "About", 
    url: "About", 
    defaults: new { controller = "Public", action = "About" } 
); 

routes.MapRoute(
    name: "MyPageSummary", 
    url: "MyPage", 
    defaults: new { controller = "MyPage", action = "Summary" } 
); 

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Public", action = "Start", id = UrlParameter.Optional } 
); 
Problemi correlati