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

https://Host/ControllerName/ActionName/ParametersRouteTable) 解析:Controller、Action、參數。Controllers/{ControllerName}Controller.cs 類別。ViewData,回傳 ViewResult。Views/{ControllerName}/{ActionName}.aspx 渲染。https://localhost/Home/IndexHomeController.Index() → 取得分類資料 → ViewData["Categories"] → View("Index")。Views/Home/Index.aspx。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);
}
}
{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 架構的關鍵基石。