3-2.ASP.NET Core MVC 入門教學 - 基礎路由介紹

ASP.NET Core MVC 入門教學

首先,先來簡單講解一下路由機制

那路由是什麼呢?

簡單來說,就是當使用者要求一個網址時,這一個網址該對應到哪一個頁面

這一個規則的設計機制就叫路由

那從上一篇我們可以知道,在MVC的架構之下,網址跟你程式目錄結構並沒有呈現一個相對的關係

而是在某一個規則下進行對應,那這個規則可以自己設定嗎?在哪裡?

現在就要來介紹基本的路由設定

首先我們打開Program.cs,到最下面可以看到這一段

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

這就是預設的路由設定

name的部分是這個設定的名稱,可自訂

patter是路由的規則

首先看到{controller=Home},代表網址的第一個位置是controller的名稱,如下圖如果你要對應到HomeController,你網址的第一個位置就要打Home

那這邊=Home的意思是說,當你空著的時候默認為home

第二個位置為{action=Index},代表對應HomeController.cs裡的方法,如下圖,所以要對應到Index()方法時,你第二個位置就要打Index

那=Index就一樣就是,當你空著的時候默認為index

第三個位置{id?},有一個?代表這個位置可有可沒有,這以後用到會再講,這邊就先不說了

所以當我們網址什麼都不打的時候,等同於/home/index這個網址

然後顯示的頁面就會是,下圖Index.cshtml的內容

那如果我們今天想新增一個新的規則該怎麼做呢?很簡單就在下面再多新增一個就行

app.MapControllerRoute(
    name: "default1",
    pattern: "{action}",
    defaults: new { controller = "Home" });

我這邊想新增的規則是,我不想要每個網址都是兩層的,譬如我不想要網址是/Home/Privacy,而是/Privacy就好

所以我這邊可以寫一個新個規則,我pattern(網址)只有一層時,使用的會是HomeController,而網址的名稱就是HomeController裡的方法名稱

如此一來我不用打/Home/Privacy,打/Privacy,也能同樣對應到下圖這一頁

那這邊只是先簡單介紹一下網址控制的機制,有這樣的路由規則設定在控制

以後有遇到更複雜的情境需求,會再詳細介紹更多的路由用法

 

參考資料: 
ASP.NET Core 中的路由至控制器動作




Copyright © 凱哥寫程式 2022 | Powered by TalllKai ❤