2013-04-05 9 views
12

Ich benutze ASP.NET MVC 4 und ich habe einige Probleme Einstellungen meiner Routen. Können Sie sagen, meine, wie meine Routen einzurichten Urls Aktionen zu hinweisen, wie folgt:Routing mit und ohne Controller-Name in ASP.NET MVC 4

  • "/" (oder "/ Start") => PublicController.Start()
  • "/ Über" => PublicController.About()
  • "/ MyPage" (oder "/ MyPage/Summary") => MyPageController.Summary()
  • "/ MyPage/Rechnungen" => MyPageController.Invoices()
  • „/ MyPage/Rechnung/72 "=> MyPageController.Invoice (int id)

Es ist die URL "/ About", die Dinge für mich vermasselt, d. H. Eine URL, die den Controller nicht angibt. Wenn ich das mache arbeiten die anderen, die Controller angeben, aufhören zu arbeiten. Ich könnte einfach einen separaten Controller für "/ About" erstellen, aber ich möchte lieber nicht, wenn ich nicht muss (ich habe mehr URLs, die diesem Muster folgen).

Antwort

28

Dies sollte es tun:

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