2013-03-07 99 views
0

我們正在構建產品站點並使用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添加另一根級別路由?

回答

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模式應位於和路由集合處。

+0

這工作! - 如何「知道」? :) – 2013-03-07 21:42:04