1.9 路由設定

MVC根據網址資訊調用指定控制器中的特定動作方法,方法執行完畢之後回傳結果,這中間的過程透過路由機制進行控制。當使用者點擊連結或是其它任何操作(例如按下傳送表單按鈕),此時瀏覽器傳送一段網址字串回網站伺服器,ASP.NET 便會解析網址字串以決定接下來的運算程序,而解析的規則設定於App_Start/RouteConfig.cs檔案中,現在開啟MVCDemo專案,找到這個檔案,將其展開,來看以下的內容:

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

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

其中的 RegisterRoutes 建構式程式碼定義了路由規則,routes.IgnoreRoute() 中的參數表示比對的網址字串格式,如果解析的字串符合此格式,則忽略不作處理。接下來的routes.MapRoute()則進一步解析網址字串,在其中的三個具名參數中,name表示此路由配置的名稱,第二個具名參數url則是要解析的格式,例如以下的的網址字串:

http://localhost:57407/Account/Register

從localhost:57407之後開始,第一個Account對應至 url 格式中的第一個參數{controller},第二個Register對應至{action},完成比對之後,ASP.NET MVC接下來會找到Account 控制器檔案,並且找到其中的Register方法開始執行以完成瀏覽器的要求。最後的default 是預設值,當路由機制無法針對目前接收到的網址字串順利完成比對,將會嘗試以這裏的設定為預設值,結果如下:

http://localhost:57407/Home/Index

執行預設專案時,檢視網址列會發現只有 http://localhost:57407/ ,缺少了 Home/Index,在這種情形,路由機制更根據預設的defalut 參數設定,從Home控制器找到 Index 方法執行之後取得以下的結果畫面。


這一節比較短,針對入門者進行路由機制的簡要介紹與討論,而第一章ASP.NET MVC 的概念式課程也將在這篇劃下句點了,下一章開始,將從資料存取操作的實作開始,進一步討論 ASP.NET MVC 的各項技術細節。


沒有留言: