2012-04-09 3 views
2

다국어 웹 사이트에서 친숙한 URL을 지원하기 위해 MapPageRoute (ASP.NET 4)를 사용하고 있습니다.MapPageRoute 추가 매개 변수

MapPageRoute에 정의 된 매개 변수와 함께 추가 매개 변수를 전달할 수 있기를 원합니다.

위 예제에서 URL : 에 따라 요청한 언어를 결정해야합니다 ("액세서리"인 경우 페이지는 "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에 명시 적으로 없다고 가정하면 추가 매개 변수를 전달할 수 있습니까?

경로 처리기 (페이지)에 추가 매개 변수를 전달하는 것입니다 당신이 원하는, 당신은 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