2012-04-09 11 views
2

Ich benutze MapPageRoute (ASP.NET 4) zur Unterstützung freundlicher URLs in einer mehrsprachigen Website.MapPageRoute zusätzliche Parameter in URL

Ich möchte zusätzliche Parameter zusammen mit den in der MapPageRoute definierten Parameter übergeben können.

Im obigen Beispiel muss ich die gewünschte Sprache entsprechend der URL bestimmen: (wenn es "Zubehör" ist, sollte die Seite in Englisch sein, wenn es "Zubehör" ist - die Seite sollte in Französisch sein): So

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

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

, kein Problem mit der gewünschten Zubehör Name wird gelesen von Page.RouteData.Values["accessory_name"] verwenden, aber wie kann ich lesen sie die lang Parameter?

Ich kann Request["lang"] nicht verwenden, da es mir die angeforderten Ergebnisse nicht gibt. Irgendwie ist die ?lang=xx nicht belegt.

Jede andere Idee, wie kann ich zusätzliche Parameter übergeben, vorausgesetzt, dass dieser Parameter nicht explizit in der URL gefunden wird?

Antwort

5

Wenn das, was Sie wollen, ist zusätzliche Parameter zu Ihrer Route-Handler (Seite) zu übergeben, Sie DataTokens Eigenschaft,

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

einstellen können Sie dies in Ihrem Handler (Seite),

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

zugreifen können

Überprüfen Sie msdn, Route.DataTokens Property