大家好,這一篇向大家介紹ASP.NET MVC路由機制。【PS:上一篇-->6. ASP.NET MVC 5.0中的HTML Helpers【HTML幫助類】 】 路由是一個模式匹配系統,它確保你能夠將瀏覽器的請求,傳遞到控制器特定的Action方法上。路由引擎使用路由表,來將瀏覽器發送來的請求UR ...
大家好,這一篇向大家介紹ASP.NET MVC路由機制。【PS:上一篇-->6. ASP.NET MVC 5.0中的HTML Helpers【HTML幫助類】 】
路由是一個模式匹配系統,它確保你能夠將瀏覽器的請求,傳遞到控制器特定的Action方法上。路由引擎使用路由表,來將瀏覽器發送來的請求URL和路由表中定義的URL進行匹配。RouteConfig文件用來添加路由規則,路由是調用控制器和Action的方式。
我們在Global.asax文件中註冊路由:通過在Application_Start方法中調用RegisterRoutes方法來註冊路由。路由用於創建用戶友好的URLs.路由可以設置程式啟動頁面,就像ASP.NET Web Forms 這樣。路由系統能夠使我們能夠創建任何您想要的url,並以清晰和簡潔的方式表達它們。
下麵是路由引擎來執行路由,路由系統根據,用戶請求的URL,來匹配路由表。如果找到了,就繼續處理,沒找到就拋異常。當ASP.NET 路由引擎在運行的時候收到了這個請求,然後就會為請求的URL,在路由表中找到匹配的規則,如果找到了 ,請求就會接著轉到相應的控制器中,否則就會報HTTP 404錯誤。
下麵的圖片中,chapters是控制器,speakers是方法,Actions是可選的,這個URL匹配的是Home/Action這個路由規則,其中Action是Home控制器中的方法,還有路由你可以進一步配置一個可選參數ID,用來指向特定的數據。這就是為什麼路由引擎知道哪些參數是可選的了。
現在理論知識瞭解差不多了,我們來看看怎麼給MVC應用程式添加路由,以完成從控制器到Action的映射。我們來創建一個項目,動手實踐一下:
創建一個空模板的MVC應用程式。
每一個MVC應用程式都預設創建了路由配置文件RouteConfig,裡面有預設的實現。我們來看看:
可以看到RouteConfig類有一個靜態的RegisterRoutes方法,這個方法在我們程式啟動的時候,從Global.asax文件中進行註冊。除此之外,任何帶有.axd的請求,就會被IgnoreRoute進行捕捉,而交給程式的其他處理機制進行處理。我們可以這樣說,IgnoreRoute用來阻止特殊的路由表,例如Web.Config,圖片文件等等。
MapRoute方法是一個擴展方法,意味著方法已經在路由集合中定義了。代碼裡面定義了預設的路由規則,預設的路由名稱是”Default“,指向的是Home控制器,Index方法,還有一個可選的id參數。
路由表在Golbal.asax文件中進行註冊,當程式啟動的時候,Application_Start方法被調用,然後就進行路由註冊。
基本的預設路由配置介紹完了,我們怎麼創建自己的路由規則呢?
首先,我們創建一個Author控制器,然後修改一下裡面的代碼:
然後創建AuthorDetail視圖,寫入下麵的代碼:
現在打開RouteConfig文件,創建一個新的路由--【Author】
運行項目:
然後再瀏覽器的URL中輸入9:
現在以QueryString方式,在瀏覽器中輸入:
還可以在方法上標註調用的是哪個路由:
看這裡我們,就創建了一個路由了Author。大家學會了麽?