2011-01-07 239 views
1

我正在为webforms应用程序使用自定义路由处理程序。我正在使用路线来确定本地化。即: 如果URL具有ESFR的路线,将负载无论是西班牙语或法语的资源。asp.net web form自定义路由器处理程序

例如:

www.someroute/ES/checkstuff/checkstuff.aspx

将加载:

www.someroute/checkstuff/checkstuff.aspx与西班牙资源。

我在Global.asax中通过配置自定义路线:

protected void Application_Start(object sender, EventArgs e) 
    { 
     RegisterRoutes(RouteTable.Routes); 
    } 

    public static void RegisterRoutes(RouteCollection routes) 
    { 
     foreach (var value in _customRoutes) 
     { 
      routes.Add(value.RouteName, new Route(value.Route, new CustomRouteHandler(value.ResolvedRoute))); 
     } 
    } 

其中_customroutes是路由的列表。

有没有办法做到这一点与某种模式匹配,所以我可以避免在应用程序中的每个页面添加一个特定的路线。虽然我知道我可以使用t4模板来生成路线,但我想我正在寻找一种动态的方式来创建列表

回答

0

我会处理语言部分通过一些简单的旧的重写与HttpModuleBeginReguest处理程序并让Routing引擎负责其余部分。

记住Routing机制发生远晚于BeginRequest所以你可以放心地确定语言,设置你的线程的CultureInfo和重写请求URL没有包含语言的一部分,你的Routing永远不会知道这件事。

2

我发现使用MapPageroute比route.Add更简单。随着的MapPageRoute我可以使用通配符,并与两个条目:

 routes.MapPageRoute("Spanish", "es/{*page}", "~/{page}"); 
     routes.MapPageRoute("Kreyol", "fr/{*page}", "~/{page}"); 

我能够为西班牙和Kreole页面提供所需的路由。

感谢大家的帮助。