0

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

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

它工作得很好..

鞋子/女士,鞋子/儿童,靴子/男士,靴子/女士。

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

产品/Mountain-Light-Mens-Hiking-Boots

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

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启动。

我知道路由器不知道“产品”是否是类别名称。

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

4

1 回答 1

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 应该在和路由集合中。

于 2013-03-07T20:30:38.217 回答