【公告】因應 .NET5 2020 改版,原預計 6/1 開放 ASP.NET MVC 全系列課程訂閱暫停

ASP.NET 實務入門 - MVC 執行流程與路由組態初探

MVC專案執行的時候,根據規則執行預設的流程,首先瀏覽器將一個要求傳送至專案,這個要求是一個網址列字串。


專案接收到這個字串,解析字串內容,找到控制器檔案 HomeController,然後進入其中,找到 Index方法,執行其中的內容,return 這一行程式碼,會直接回傳 Content 小括弧中的字串內容,因此最後我們看到呈現的網頁內容,剛好是其中指定的字串。

如果開啟原始碼,如以下右邊的網頁原始碼視窗,會看到其中並沒有任何 HTML 標籤,這表示最後送出的內容確實只有這一行指定的字串,而瀏覽器將其呈現出來。


你可以嘗試修改Content小括弧後方的字串,重新檢視輸出結果。

這是最簡單的 MVC 流程,根據前端傳送來的要求,以控制器為中心,執行其中的方法,完成輸出,至於MVC是如何解析瀏覽器字串,找到控制器並正確的執行其中的方法,這要從路由組態的設定檔開始談起。


於專目錄中找到App_Start資料夾,開啟其中的 RouteConfig.cs 這個類別檔,其中的 RegisterRoutes 方法在專案啟動時完成路由組態的設定,也就是 routes.MapRoute 的內容。

其中的 name 是這個配置的識別名稱,Default 表示其為預設配置,接下來的 url 則是網址列的解析格式,以倒斜線分割為三個區段:

/{Controller}/{ActionName}/{id}

Controller 是控制器檔案類別名稱去掉 Controller 字尾的識別字串,而 ActionName 則是方法名稱,id則是要傳入的參數。

接下來的 defaults 則是指定各區段未指定值的時候,要如何找到執行控制器,缺少 controller 則預設找名稱為 Home 的控制器,缺少 action 則找 index ,最後的 id 指定為 UrlParameter.Optional,表示這是一個選擇性的參數,可以不用指定。

回到執行MVC專案,來看其中的網址:


這一行網址 http://localhost:58048/ 完全沒有 Controller ActionName 以及 id 區段,因此會以預設值為依據,因此嘗試尋找 HomeController 控制器,並尋找其中的 Index 方法,執行完成後輸出結果。

回到上述的範例,當輸入 http://localhost:54590/Hello/Index,它會找到  HelloController 這個控制器類別,然後執行其中的  Index() 方法,與上述的 http://localhost:54590/ 得到的結果相同,例如以下的截圖:


瞭解路由組態是進入 MVC 的第一個關卡,瞭解這裏的討論,接下來就可以開始嘗試學習如何在MVC建立真正的網路內容,這是檢視檔案的議題。


沒有留言: