Routing 將 URL 對應至 Controller/Action。本文涵蓋路由參數語法、忽略路由、正則約束、MapRoute 擴充方法、靜態註冊方法利於單元測試等進階主題。
| 路由定義 | 符合 URL 範例 |
|---|---|
{controller}/{action}/{id} | /Products/show/beverages |
{table}/Details.aspx | /Products/Details.aspx |
blog/{action}/{entry} | /blog/show/123 |
{reporttype}/{year}/{month}/{day} | /sales/2008/1/5 |
public static void RegisterRoutes(RouteCollection routes)
{
// 忽略 .axd 資源(如 WebResource.axd、ScriptResource.axd)
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// 使用 MapRoute 擴充方法簡化註冊
routes.MapRoute(
"Category", // 路由名稱
"Category/{action}/{categoryName}", // URL 模式
new { controller = "Category", action = "Index", categoryName = "4mvc" } // 預設值
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" },
new { id = @"\d+" } // id 必須為數字
);
RegisterRoutes 宣告為 static 並接受 RouteCollection 參數。RegisterRoutes(myRouteCollection) 驗證路由規則,無需啟動 Web 伺服器。善用 MapRoute、IgnoreRoute 與條件約束,能精準控制 URL 對應邏輯。靜態註冊模式是可測試路由配置的關鍵實踐。