使用过ASP.NET MVC的同学可能对Route已经有些接触,在ASP.NET WebForm中为实现类似的功能也许会使用URL Rewrite。本文将介绍在ASP.NET WebForm中使用Route。
1. 找到Global.asax文件,如果没有这个文件就新建一个。
2. 添加RegisterRoutes方法
代码
1 public static void RegisterRoutes(RouteCollection routes)
2 {
3 // 默认页
4 routes.MapPageRoute(
5 "Defautl",
6 "",
7 "~/Folder1/WebForm1.aspx"
8 );
9
10 // 对{folder}/{webform}形式的URL进行路由
11 routes.MapPageRoute(
12 "WebForm1",
13 "{folder}/{webform}",
14 "~/{folder}/{webform}.aspx"
15 );
16
17 // 对{folder}/{page}形式的URL进行路由(带参数)
18 routes.MapPageRoute(
19 "WebForm2",
20 "{floder}/{webform}/{parameter}",
21 "~/{floder}/{webform}.aspx"
22 );
23
24 }
2 {
3 // 默认页
4 routes.MapPageRoute(
5 "Defautl",
6 "",
7 "~/Folder1/WebForm1.aspx"
8 );
9
10 // 对{folder}/{webform}形式的URL进行路由
11 routes.MapPageRoute(
12 "WebForm1",
13 "{folder}/{webform}",
14 "~/{folder}/{webform}.aspx"
15 );
16
17 // 对{folder}/{page}形式的URL进行路由(带参数)
18 routes.MapPageRoute(
19 "WebForm2",
20 "{floder}/{webform}/{parameter}",
21 "~/{floder}/{webform}.aspx"
22 );
23
24 }
3. 在Application_Start方法中使用RegisterRoute方法。
1 protected void Application_Start(object sender, EventArgs e)
2 {
3 RegisterRoutes(RouteTable.Routes);
4 }
2 {
3 RegisterRoutes(RouteTable.Routes);
4 }
如果要获取URL中的参数,可以参考下面的代码
1 string parameter = Page.RouteData.Values["parameter"] as string;
它将获取占位符为parameter的参数。如~/Folder2/WebForm3/abc可获取parameter参数的值是abc,但是如果遇到~/Folder2/WebForm3?parameter=abc似乎获取不到parameter的参数值。可以使用
1 string parameter = Request.Params["parameter"] as string;
来获取。
本文适用于 ASP.NET 4