透過 RouteTable.Routes 取得全域路由表,呼叫 MapPageRoute 註冊 URL 模板與實體檔案的對應。本文以天氣查詢為例,示範路由註冊細節與預設值運作。
在 Global.asax 的 Application_Start 中註冊:
var defaults = new RouteValueDictionary { { "areacode", "010" }, { "days", 2 } };
var constraints = new RouteValueDictionary { { "areacode", @"0\d{2,3}" }, { "days", @"[1-3]{1}" } };
var dataTokens = new RouteValueDictionary { { "defaultCity", "BeiJing" }, { "defaultDays", 2 } };
RouteTable.Routes.MapPageRoute("default", "{areacode}/{days}", "~/weather.aspx", false, defaults, constraints, dataTokens);
因設有預設值,以下三種 URL 均會解析為相同結果:
/021)/021/3)
解析出的變數存放於 RouteData.Values,註冊時的 DataTokens 也會複製到 RouteData.DataTokens 中。預設 RouteHandler 為 PageRouteHandler。