ASP.NET MVC 自定義路由


自定義路由一定要在默認路由上面

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 
             routes.MapRoute(
                 "Default", // 路由名稱
                 "{controller}/{action}/{id}", // 帶有參數的 URL
                 new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 參數默認值
             );

  

上面是一個默認的路由,有路由名字那么代表一定是允許有多個路由的。

在MVC中,自定義的路由一定要寫在默認的路由上面,這樣才能起作用。

 

如下,代碼:

 

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 
             routes.MapRoute(
                 "自定義路由", // 路由名稱
                 "{controller}/{action}/{id}", // 帶有參數的 URL
                 new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 參數默認值
             );

  但是里面 {controller}/{action}/{id} 卻跟默認的路由是一樣的

如果這樣寫,那簡直是木有效果的。 要記住一點 大括號 {} 就是代表里面的東西是可有可無的。

所以可以改成 如下:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
  
              routes.MapRoute(
                  "自定義路由", // 路由名稱
                  "controller/{action}/{id}", // 帶有參數的 URL
                  new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 參數默認值
              );

  這樣寫,代表着控制器是必須寫的。。

當你訪問一個網址,沒有寫控制器,那么就會跳到默認的第二個路由,也就是默認路由那里。

當你有地址有寫路由,那么程序從頭往下去找路由,找到第一個,發現匹配,那么就會根據它跳轉到對應的action

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM