2017-01-01 66 views
1

我必須在這裏尋求幫助,因爲我不知道它是怎麼發生的,這裏有什麼問題。自定義路線覆蓋其他路線

這裏是路線:

 public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "View", 
      url: "{controller}/{action}/{id}/{cid}/{pid}", 
      defaults: new { controller = "Read", action = "R", id = UrlParameter.Optional, cid = UrlParameter.Optional, pid = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      name: "JsonResult", 
      url: "jsonresult/{id}/{cid}/{pid}", 
      defaults: new { controller = "Find", action = "Readable", id = UrlParameter.Optional, cid = UrlParameter.Optional, pid = UrlParameter.Optional} 
     ); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}", 
      defaults: new { controller = "Read", action = "Index" } 
     ); 
    } 

有它serveral的問題現在:

第一 - 這是在底部沒有在所有的工作的默認。由於某種原因,我實際上讓"View"路由成爲Default路由。 第二 - JsonResult路線得到404 error,如果我把它放在頂部,它會消失,但然後View路線不起作用。

我真的不知道如何解決; l

回答

0

總是將您的默認路線放在頂部。

來到您的jsonresult問題,您缺少控制器名稱。

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}", 
      defaults: new { controller = "Read", action = "Index" } 
     ); 

     routes.MapRoute(
      name: "View", 
      url: "{controller}/{action}/{id}/{cid}/{pid}", 
      defaults: new { controller = "Read", action = "R", id = UrlParameter.Optional, cid = UrlParameter.Optional, pid = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      name: "JsonResult", 
      url: "{controller}/{id}/{cid}/{pid}", /*Changed to Controller here*/ 
      defaults: new { controller = "Find", action = "Readable", id = UrlParameter.Optional, cid = UrlParameter.Optional, pid = UrlParameter.Optional} 
     ); 

    }