ASP.NET Webform Routing

问题描述:

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

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

它的伟大工程..

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

我们希望添加了一个新的途径来获得以下resutls

产品/山地光男装远足靴

所以我们现在我们的路由器有

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

但是,当我们去/产品/ Mountain-Light-Mens-Hiking-Boots路由器启动SubCategory.aspx,这不是我们想要发生的事情。我们希望启动这个产品。

我知道路由器不知道'产品'是否是一个categoryName或不是。

如何为/ Products添加另一根级别路由?

更改代码才能这样

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模式应位于和路由集合处。

+0

这工作! - 如何“知道”? :) – 2013-03-07 21:42:04