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

ASP.NET MVC 案例教程(三):全局視角掌握路由、Controller 與 View 交互流程

     編輯:關於ASP.NET

系列第三篇,從全局視角解析 ASP.NET MVC 請求處理管線:URL 路由解析 → Controller 派發 → Action 執行 → View 渲染 → 回應瀏覽器。配合自繪架構圖與 Global.asax 路由設定,建立完整心智模型。

請求處理全流程圖解

MVC 請求處理流程圖

  1. 使用者發送 URL:https://Host/ControllerName/ActionName/Parameters
  2. 路由系統 (RouteTable) 解析:Controller、Action、參數。
  3. 尋找 Controllers/{ControllerName}Controller.cs 類別。
  4. 呼叫同名 Action 方法,傳入參數。
  5. Action 執行邏輯,填充 ViewData,回傳 ViewResult。
  6. 預設尋找 Views/{ControllerName}/{ActionName}.aspx 渲染。
  7. View 讀取 ViewData 產生 HTML 回應。

實例回顧:首頁請求

  • URL:https://localhost/Home/Index
  • 路由解析:Controller=Home, Action=Index, 參數無。
  • 執行 HomeController.Index() → 取得分類資料 → ViewData["Categories"] → View("Index")。
  • 渲染 Views/Home/Index.aspx。

路由設定深度解析 (Global.asax.cs)

public class MvcApplication : System.Web.HttpApplication
{
    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 = "" } // 預設值
        );
    }

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }
}

路由核心概念

  • URL 模板:{controller}/{action}/{id},大括號為參數佔位符。
  • 預設值:缺少區段時使用 (如 /Home → action=Index)。
  • 約束條件:可加入正則限制 (如 id = @"\d+")。
  • 忽略路由:IgnoreRoute 處理靜態資源、傳統 .asmx/.axd。
  • 順序敏感:先註冊優先匹配,特定路由置前,通用路由置後。

進階路由技巧

// 區域註冊
routes.MapRoute(
    "Admin",
    "Admin/{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional },
    new[] { "MyApp.Areas.Admin.Controllers" } // 命名空間限制
);

// RESTful 風格
routes.MapRoute(
    "Api",
    "api/{controller}/{id}",
    new { id = UrlParameter.Optional },
    new { httpMethod = new HttpMethodConstraint("GET", "POST", "PUT", "DELETE") }
);

總結

路由是 MVC 應用的「導航儀」,決定 URL 與程式碼的對應關係。理解路由解析順序、參數繫結、預設值與約束,是掌握 MVC 架構的關鍵基石。

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