2

多言語 Web サイトでわかりやすい URL をサポートするために MapPageRoute (ASP.NET 4) を使用しています。

MapPageRoute で定義されているものと一緒に、追加のパラメーターを渡すことができるようにしたいと考えています。

上記の例では、URL に従って要求された言語を決定する必要があります (「Accessories」の場合、ページは英語である必要があり、「Accessoires」の場合 - ページはフランス語である必要があります):

 routes.MapPageRoute(
           "Accessory fr",
           "Accessoires/{accessory_name}",
           "~/Accessory.aspx?lang=fr"
        );

    routes.MapPageRoute(
       "Accessory en",
       "Accessories/{accessory_name}",
       "~/Accessory.aspx?lang=en"
    );

ということで、リクエストされたアクセサリ名は問題なく で読み取れるのですが、パラメータPage.RouteData.Values["accessory_name"]はどうやって読み取れるのでしょうか?lang

Request["lang"]要求された結果が得られないため、使用できません。なんとなく、?lang=xxとれません。

このパラメーターが URL に明示的に見つからないと仮定して、追加のパラメーターを渡すにはどうすればよいですか?

4

1 に答える 1

6

追加のパラメーターをルート ハンドラー (ページ) に渡したい場合は、DataTokens プロパティを設定できます。

Route reportRoute = new Route("Accessoires/{accessory_name}", new PageRouteHandler("~/Accessory.aspx"));
reportRoute.DataTokens = new RouteValueDictionary { { "lang", "en" } };
routes.Add(reportRoute);

ハンドラ(ページ)でこれにアクセスできます。

string lang = (string)Page.RouteData.DataTokens["lang"];

msdn、 Route.DataTokens プロパティを確認してください

于 2012-06-14T12:59:04.527 に答える