2012-04-09 6 views
2

多言語WebサイトでフレンドリーなURLをサポートするためにMapPageRoute(ASP.NET 4)を使用しています。MapPageRoute URLの追加パラメータ

MapPageRouteで定義されているパラメータと一緒に追加のパラメータを渡したいと思っています。

上記の例では、URL「 」(「アクセサリ」の場合は、ページが英語である必要があります。「アクセシビリティ」の場合はページがフランス語である必要があります) ):

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に明示的に見つからないと仮定して、追加のパラメータを渡すことはできますか?

あなたのルートハンドラ(ページ)に追加のパラメータを渡すことです何をしたい、あなたがDataTokensプロパティを設定することができる場合

答えて

5

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 Property

関連する問題