System.Web.Routing入门及进阶(下)2010-05-20 cnblogs 重典上面介绍的是最简单的一种定义方式。当然我们可以建立更复杂的规则。其中就包括设定规则的默认值以及设定规则的正则表达式。UrlRouting高级应用预计效果:当我访问/a/b.aspx时就会转到Default.aspx?category=a&action=b在页面上显示category:aaction:b亦如果我访问/chsword/xxxx.aspx就会转到Default.aspx?category=chsword&action=xxxx就会显示category:chswordaction:xxxx如果访问/chsword/就会转到 Default.aspx?category=chsword&action=index就会显示category:chswordaction:index首先我建立一个Route
routes.Add(
"Default",
new Route("{category}/{action}.aspx",
new RouteValueDictionary(
new
{
file = "Default",
category = "home",
action = "index"
}), new MyRouteHandler()
)
);
当然IHttpHandler的处理方式也要有所改变为了方便查看我使用了下方法:
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()
:"")
);即/a/b.aspx是映射到Default.aspx?category=a&action=b在Default.aspx中写如下代码:category:<%=Request.Params["category"]%><br/>action:<%=Request.Params["action"]%>以显示传入的参数。如果在IIS中设置Index.aspx时就算输入/a/也会访问到/a/index.aspx,即默认的会按RouteValueDictionary中设置的值自动补全