2

我有以下内容:

    routes.MapPageRoute("RouteToPages", "{PageName}", "~/Page.aspx");

    routes.MapPageRoute("RouteToProducts", "products", "~/Products.aspx");
    routes.MapPageRoute("RouteToProduct", "product/{ProductName}", "~/Products.aspx");

当然,正如您可能已经猜到的那样,我永远无法访问我网站上的 /products,因为它会自动将我重定向到 ~/Page.aspx。有没有办法解决这个问题并允许路由到其他“目录”,同时在我的域的根目录上维护一个动态页面名称?

谢谢!

4

3 回答 3

1

我通常会编写一个 HttpModule 来处理这个问题,但我想规则应该首先匹配。试试这个:

routes.MapPageRoute("RouteToProducts", "products", "~/Products.aspx");
routes.MapPageRoute("RouteToPages", "{PageName}", "~/Page.aspx");
routes.MapPageRoute("RouteToProduct", "product/{ProductName}", "~/Products.aspx");
于 2012-10-04T20:55:20.430 回答
1

以相反的顺序放置路线 - 最具体到特定租赁。重定向到路由时,它将搜索直到找到匹配项,然后停止。

routes.MapPageRoute("RouteToProduct", "product/{ProductName}", "~/Products.aspx");
routes.MapPageRoute("RouteToProducts", "products", "~/Products.aspx");
routes.MapPageRoute("RouteToPages", "{PageName}", "~/Page.aspx");
于 2012-10-04T20:56:00.220 回答
0

您应该能够翻转路线

routes.MapPageRoute("RouteToProducts", "products", "~/Products.aspx");
routes.MapPageRoute("RouteToProduct", "product/{ProductName}", "~/Products.aspx");
routes.MapPageRoute("RouteToPages", "{PageName}", "~/Page.aspx");
  • /products应该去/products.aspx
  • /product/foo应该去/products.aspx
  • /foo应该去/pages.aspx

路线先到先得。如果它是路线 1,那就是它需要的路线。{PageName}匹配一切,自然而然地它会优先

于 2012-10-04T20:57:26.020 回答