ASP.NET Webform Routing

时间:2013-03-07 20:23:28

标签: asp.net routing webforms asp.net-routing

我们正在构建产品站点并在ASP.NET WebForms C#中使用路由。 我们目前有

routes.MapPageRoute("", "{categoryName}", "~/Category.aspx");
routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 

效果很好..

鞋子/女装,鞋/童装,靴子/男装,靴子/女装。

我们添加了一条新路线,希望获得以下结果

产品/山型光男装-远足靴

所以我们现在的路由器已经

routes.MapPageRoute("", "{categoryName}", "~/Category.aspx");
routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 
routes.MapPageRoute("", "Product/{productName}", "~/Product.aspx");

然而,当我们去 / Product / Mountain-Light-Mens-Hiking-Boots 时,路由器会触发 SubCategory.aspx ,这不是我们想要发生的事情。我们希望 Product.aspx 启动。

我知道路由器不知道'Prodcut'是否是categoryName。

如何为/ Products添加其他根级别路由?

1 个答案:

答案 0 :(得分:2)

像这样更改您的代码顺序

routes.MapPageRoute("", "Product/{productName}", "~/Product.aspx");
routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 
routes.MapPageRoute("", "{categoryName}", "~/Category.aspx");

订单非常重要。因为您输入的网址如“www.domain.com/abc/abc”和

routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 

第三号那条路线从未打过电话。它按照路线呼叫。

routes.MapPageRoute("", "{categoryName}", "~/Category.aspx");

价值将会是。

string Value= Page.RouteData.Values["categoryName"].ToString();
Value= "abc/abc";

因此,包含一个参数的Url Pattern应位于和Route Collection。