MapPageRoute URL中的其他参数

时间:2012-04-09 07:40:11

标签: asp.net url-routing

我正在使用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中没有明确找到这个参数?

1 个答案:

答案 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