從 Http 要求/回應 到 MVC

ASP.NET Core Web 應用開發–使用 MVC 框架 / PART I MVC 入門 / 從 Http 要求/回應 到 MVC

要求與回應循環從瀏覽器的網址列字串開始,參考以下的圖示說明:



截圖說明要求到回應的過程中,從標示為 1 開始,網址列字串的要求專案中的控制器區域 - Controllers 資料夾,找到名稱「HomeController.cs」的控制器檔案,執行檔案中的 Index 動作方法,而 return View() 則移至 Views 資料夾中,找到 Home 子資料夾,然後取出其中的 Index.cshtml 檔案執行轉換成為 HTML 內容,傳送至瀏覽器,呈現網頁的內容。

路由設定

MVC專案根據預設路由機制的描述,完成上述的流程,回到網址列字串,列舉如下,其中除了位址資訊以及通訊埠的編號,並沒有其它的資訊:

https://localhost:44397/

開啟專案根目錄,找到其中的 Startup.cs 類別檔將其開啟,可以看到Startup類別定義:


MVC專案啟動執行時,會執行 Startup 類別中的 ConfigureServices Configure 方法, 預設路由機制設定於 Configure 方法,內容如下:


其中執行 app.UseEndpoints 方法,endpoints.MapControllerRoute 設定的 pattern 屬性裏面,指定 controller Home,而 action Index,後續的 id 表示選擇性的參數,可以在需要的時候傳入,經過這組設定,MVC在沒有其它路徑字串節點參數的情形下,便直接找到名稱為Home的控制器,執行其中的 Index 方法。


現在重新於瀏覽器輸入以下的要求位址字串:

https://localhost:44397/Home/Index

輸出結果與上述預設網址列的內容相同:



以斜線分割,每一段是一個節點,對比組態中的設定,以下並列比較:


pattern 指定的第一組大括弧表示要執行的控制器檔案,如果沒有就指定 Home,對應到網址列字串是緊接著通訊埠編號(44397)斜線後方的第一個節點內容,第二組大括弧則是控制器中要執行的動作方法名稱,如果沒有指定則找到 Index,對應到的網址列字串則是下一個斜線的 Index 節點區段。

以上說明了為何在沒指定通訊埠編號(44397)後方節點區段的相關資訊時,會有相同的執行結果。

後續針對控制器與路由設定將逐步深入說明細節,而這裏要先知道的,控制器檔案是以其名稱加上 Controller 字尾,所以 Home 表示要執行配置於 Controllers 資料夾中的 HomeController 控制器類別,因此會對應至 HomeController.cs 檔案。


沒有留言:

熱門點閱