2013-04-05 6 views
12

Używam ASP.NET MVC 4 i mam pewne problemy z ustawieniami moich tras. Czy możesz powiedzieć mojemu jak skonfigurować moje trasy wskazać adresy URL do działań w następujący sposób:Routing z i bez nazwy kontrolera w ASP.NET MVC 4

  • "/" (lub "/ Start") => PublicController.Start()
  • "/ O" => PublicController.About()
  • "/ MojaStrona" (lub "/ MojaStrona/Podsumowanie") => MyPageController.Summary()
  • "/ MojaStrona/faktur" => MyPageController.Invoices()
  • „/ MojaStrona/Invoice/72 "=> MyPageController.Invoice (int id)

To jest adres URL "/ About", który niweczy rzeczy, tj. Adres URL, który nie określa kontrolera. Jeśli wykonam tę pracę, pozostałe, które określają kontroler, przestają działać. Mógłbym po prostu stworzyć osobny kontroler dla "/ O mnie", ale wolałbym, gdybym nie musiał (mam więcej adresów URL podążających za tym wzorcem).

Odpowiedz

28

ten powinien zrobić:

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