2

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

我希望能够传递附加参数以及 MapPageRoute 中定义的参数。

在上面的例子中,我需要根据 URL 确定请求的语言:(如果是“Accessories”,页面应该是英文,如果是“Accessoires” - 页面应该是法语):

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

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

所以,请求的附件名称没有问题,它是通过 using 读取的Page.RouteData.Values["accessory_name"],但是如何读取lang参数?

我不能使用Request["lang"],因为它没有给我要求的结果。不知何故,?lang=xx没有采取。

任何其他想法,我如何传递附加参数,假设在 URL 中没有明确找到这个参数?

4

1 回答 1

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 属性

于 2012-06-14T12:59:04.527 回答