進階路由規則包含預設值與正則約束設定。
/a/b.aspx → Default.aspx?category=a&action=b 顯示 category:a, action:b/chsword/xxxx.aspx → Default.aspx?category=chsword&action=xxxx/chsword/ → Default.aspx?category=chsword&action=index(預設值生效)routes.Add("Default",
new Route("{category}/{action}.aspx",
new RouteValueDictionary(new {
file = "Default",
category = "home",
action = "index"
}),
new MyRouteHandler()
)
);
context.Server.Execute(string.Format("/{0}.aspx?category={1}&action={2}",
RequestContext.RouteData.Values.ContainsKey("file") ? RequestContext.RouteData.Values["file"].ToString() : "default",
RequestContext.RouteData.Values.ContainsKey("category") ? RequestContext.RouteData.Values["category"].ToString() : "",
RequestContext.RouteData.Values.ContainsKey("action") ? RequestContext.RouteData.Values["action"].ToString() : ""
));
Default.aspx 以 Request.Params["category"]、Request.Params["action"] 顯示參數。IIS 設定預設文件為 Index.aspx 時,/chsword/ 自動補全為 /chsword/index.aspx,觸發路由預設值機制。