2

私は以下を持っています:

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

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

もちろん、ご想像のとおり、Web サイトの /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 に答える