Asp.Net MVC 路由匹配

                                                                                              Asp.Net MVC 路由匹配

一、關於{controller}/{action}

(1)、必不可少:在一個是實際的MVC系統中,{controller}/{action}是必不可少的,如果沒有就會因爲找不到路徑而出錯

(2)、約定規則:這個佔位符是MVC裏面約定的,並會自動解析爲控制器和對應的動作方法

(3)、位置靈活:這兩個約定的佔位符可以在任意位置

public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//默認路由
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
//含有常量的路由
routes.MapRoute(
name: "test0",
url: "{first}/{second}/{third}/{forth}/aspx",
defaults: new { controller = "Work", action = "Index", id = UrlParameter.Optional }
);
//只有一個控制器的路由
routes.MapRoute(
name: "test1",
url: "{year}/{month}/{day}/{controller}",
defaults: new { controller = "Admin", action = "Index", id = UrlParameter.Optional }
);
//只有一個動作方法的路由
routes.MapRoute(
name: "test2",
url: "{action}/{article}/{author}/{year}/{month}/{day}",
defaults: new { controller = "Work", action = "Index", id = UrlParameter.Optional }
);

}
}

注:如果某個路由出現錯誤可能是被在它之前的路由截取了,可以改變位置或者改變路由解決問題

二、其他佔位符

(1)、僅僅是佔位:比如{aa}/{bb}/{cc},{aa}不能被解析爲控制器{bb}也不能被解析爲動作方法

(2)、默認要求:如果一個路由中沒有規定的{controller}/{action},或者只是規定了其中之一,沒有規定的部分則使用默認值。例如

url: "{year}/{month}/{day}/{controller}",

defaults: new { controller = "Work", action = "Index", id = UrlParameter.Optional }

這個路由匹配到的Url默認是由Work控制器中的Index方法

三、匹配順序

(1)、優先使用:多個路由匹配一個Url,則優先匹配的會使用

(2)、儘量避免:定義多個路由時,儘量避免多匹配

四、Url貪婪匹配規則

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章