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

ASP.NET MVC 路由系統完整指南:預設路由、參數繫結與實戰技巧

     編輯:關於ASP.NET

路由是 MVC 應用的「導航儀」,將外部 URL 映射為內部 Controller/Action。本文系統梳理路由表配置、預設路由規則、參數預設值、以及常見映射案例。

路由配置雙重保障

  1. Web.config:註冊 UrlRoutingModule 至 system.web.httpModules、system.webServer.modules 等區段——勿刪除,否則路由失效。
  2. Global.asax:Application_Start 中建立路由表,核心代碼:
public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); // 排除 WebResource.axd 等
    routes.MapRoute(
        "Default",                              // 路由名稱
        "{controller}/{action}/{id}",           // URL 模板
        new { controller="Home", action="Index", id=UrlParameter.Optional } // 預設值
    );
}
protected void Application_Start() {
    AreaRegistration.RegisterAllAreas();
    RegisterRoutes(RouteTable.Routes);
}

預設路由解析規則

URL 遵循 /{controller}/{action}/{id} 三段式:

  • 第 1 段 → Controller 名稱(自動加「Controller」後綴查找類型)
  • 第 2 段 → Action 方法名
  • 第 3 段 → id 參數值

所有參數皆可選,預設值:Home/Index/空字串。

實際映射範例

請求 URLControllerActionid執行代碼
/Home/Index/3HomeIndex3HomeController.Index(3)
/Home/IndexHomeIndex(空)HomeController.Index()
/HomeHomeIndex(空)HomeController.Index()
/HomeIndex(空)HomeController.Index()

進階技巧

1. 區域註冊

AreaRegistration.RegisterAllAreas() 支援大型專案模組化,每個 Area 擁有獨立路由表。

2. 路由約束

使用正則限制參數格式:routes.MapRoute(..., new { id = @"\d+" }) 確保 id 為純數字。

3. 命名路由與反向生成 URL

@Url.RouteUrl("Product", new { productId = 123 }) 生成 /Product/123,避免硬編碼 URL。

4. 忽略路由

IgnoreRoute 排除傳統 .asmx、.ashx、靜態資源,防止被 MVC 攔截。

避坑指南

  • 路由順序敏感:具體路由優先,通用路由在後。
  • 參數名稱必須與 Action 參數完全一致(大小寫不敏感)。
  • 過度複雜的單一路由難以維護,建議拆分多條具體路由。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved