2011-01-07 4 views
1

webformsアプリケーション用のカスタムルートハンドラを使用しています。私は、ローカリゼーションを決定するルートを使用しています。すなわち: URLはESルートでまたはFRを持っている場合、それはスペイン語やフランス語のいずれかのリソースをロードします。例えばasp.net web formカスタムルータハンドラ

www.someroute/ES/checkstuff/checkstuff.aspx

ロードする:スペインリソースと

www.someroute/checkstuff/checkstuff.aspx。

私は経由してのglobal.asaxのカスタムルートを設定しています:

_customroutesはルートのリストである
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))); 
     } 
    } 

パターンマッチングでこれを行う方法があるので、アプリケーションの各ページに特定のルートを追加することはできません。私はルートを生成するために、T4テンプレートを使用することができます知っていますが、私は、リストを作成するための動的な方法を探しています推測

答えて

0
私は BeginReguestハンドラ内で HttpModuleでいくつかの昔ながらの書き換えによって、言語の部分を処理します

残りの部分はRoutingエンジンで処理してください。

Routingメカニズムはそうあなたが安全に、言語の部分を含み、そしてあなたのRoutingはそれについて知っていることはない、言語を決定し、あなたのスレッドでCultureInfoを設定し、noにリクエストURLを書き換えることはできませんはるかに後でBeginRequestより起こることを忘れないでください。

2

MapPagerouteを使用する方がroute.Addよりも簡単であることがわかりました。 MapPageRouteで、私は、ワイルドカードを使用することができたし、2つのエントリを持つ:

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

私はスペイン語とクレオールページの必要なルーティングを提供することができました。

ご協力いただきありがとうございます。