- 所有網站溝通都是使用 URL 進行請求,ASP.NET MVC 也是一樣,在 URL 中沒有說明 ASP.NET Routing framework,但 ASP.NET Routing framework 是每個 ASP.NET MVC 請求的核心
- ASP.NET Routing 是模式匹配系統。程序啟動時,註冊一個或多個 Framework Route 表示告訴 Routing System 遇到匹配模式應該怎麼進行
- Routing Engine 接收一個請求時,它會用這個請求的 URL 來和註冊 URL Patterns 匹配。Routing Engine 在它的 Route Table 發現匹配模式,會將請求提交對應的處理程序 (Controller)
- ASP.NET Routing
- 如果請求 URL 沒有任何註冊 Routing 匹配,Routing Engine 會返回 404 來表達無法找到對應處理程序
- Routing Engine
- ASP.NET MVC Routes 負責決定那個 Controller 方法與 Controller 動作,執行給的URL
- 創建 MVC 空專案,基本就會先創建一組 MVC Routes,並且註冊至 Global.asax 中
using System.Web.Mvc;
using System.Web.Routing;
namespace MVCRouting
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
// 忽略所有 *.axd 的網址路徑
// 在預設 RegisterRoutes 方法中的 IgnoreRoute 用來定義 不要透過 Routing 處理的網址
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Routing 網址路徑
// MapRoute 則是最常用來定義 Routing 規則的擴充方法
routes.MapRoute(
name: "Default", // 路由名稱:唯一名稱對應唯一的 Route
url: "{controller}/{action}/{id}", // URL 及參數:通過簡單的模式,將 URL 解析具有意義的字段
defaults: new // 參數預設值
{
controller = "Home", // 默認值:提供與對應字段的默認值
action = "Index",
id = UrlParameter.Optional
// constraints // 約束:一系列的約束應用到 URL 模式上
// 用來嚴格定義 URL 對應 Route
}
);
}
}
}
- 補充:
- Routes 是忽略大小寫
- URL Route Patterns 默認相當於根目錄
- 不用添加 “/” 或者 “~/” Route Patterns 包含這些字串將會拋出異常
- REF:
沒有留言:
張貼留言