【问题标题】:ASP.NET Webform RoutingASP.NET 网络表单路由
【发布时间】:2013-03-07 20:23:28
【问题描述】:

我们正在构建一个产品站点并在 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 启动。

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

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

【问题讨论】:

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


    【解决方案1】:

    像这样更改您的代码顺序

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

    顺序很重要。因为你输入像“www.domain.com/abc/abc”这样的url,如果

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

    排在第三位。然后这条路线从未调用过。它调用以下路线。

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

    价值将是。

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

    所以,包含一个参数的 Url Pattern 应该在 and Route Collection 中。

    【讨论】:

      猜你喜欢
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      相关资源
      最近更新 更多