我正在使用MapPageRoute(ASP.NET 4)来支持多语言网站中的友好网址。
我希望能够传递其他参数以及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中没有明确找到这个参数?
答案 0 :(得分: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 Property