2011-01-07 108 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頁面提供所需的路由。

感謝大家的幫助。