首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET MVC Routing 進階:路由參數定義、IgnoreRoute、條件約束、MapRoute 簡化註冊與單元測試考量

     編輯:關於ASP.NET

前言

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

Global.asax 註冊標準模式

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);
}

進階技巧

1. 忽略特定路由

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

2. 參數條件約束(正則)

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" },
    new { id = @"\d+" }  // id 必須為數字
);

3. 靜態註冊方法利於單元測試

  • RegisterRoutes 宣告為 static 並接受 RouteCollection 參數。
  • 測試專案可直接呼叫 RegisterRoutes(myRouteCollection) 驗證路由規則,無需啟動 Web 伺服器。

結語

善用 MapRoute、IgnoreRoute 與條件約束,能精準控制 URL 對應邏輯。靜態註冊模式是可測試路由配置的關鍵實踐。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved