MapPageRoute URL中的其他参数

Ran*_*nch 2 asp.net url-routing

我正在使用MapPageRoute(ASP.NET 4)来支持多语言网站中的友好URL.

我希望能够传递其他参数以及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"
    );
Run Code Online (Sandbox Code Playgroud)

因此,请求的附件名称没有问题,可以通过使用来读取Page.RouteData.Values["accessory_name"],但是如何读取lang参数呢?

我无法使用,Request["lang"]因为它没有给我所要求的结果.不知怎的,?lang=xx没有采取.

任何其他想法,我怎么能传递额外的参数,假设在URL中没有明确找到这个参数?

saj*_*ith 6

如果你想要的是将其他参数传递给你的路由处理程序(页面),你可以设置DataTokens属性,

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

你可以在你的处理程序(页面)中访问它,

string lang = (string)Page.RouteData.DataTokens["lang"];
Run Code Online (Sandbox Code Playgroud)

检查msdn, Route.DataTokens属性