1

さて、私は見つけられるかもしれない他のすべてのスタック記事をグーグルでチェックアウトして、少なくとも2日間は立ち往生しました。MVCカスタムルーティングとローカリゼーション

私のルートの最初のパラメータが有効なカルチャ名であるかどうか、そして実行前にurl/routeがカルチャ値を含むように変更されていないかどうかを確認したいだけです。

これはとても難しいですか?私はそうすべきだとは思わない。

他のすべてのコントローラが継承しているbasecontrollerクラスのものを変更してそこにチェックを入れ、すべてのルートデータを変更してそれを送信することができます。問題は私が持っている他のカスタムルートにあります。

さて、ここで私のコードに問題があります。なぜコントローラが実行されるのが最も簡単だろうと思いますか?

routes.MapRoute(
      "Localization", 
      "{lang}/{controller}/{action}", 
      new { lang="en-US",controller="Home",action="Index"} 
      ); 
     routes.MapRoute(
      "Solutions", 
      "{lang}/Solutions/{controller}/{action}", 
      new { lang="en-US", controller = "WhatWeDo", action = "Index"} 
     ); 
     routes.MapRoute(
      "Default", // Route name 
      "{lang}/{controller}/{action}/{id}", // URL with parameters 
      new { lang = "en-US", controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
     ); 

私は物事を変更しようとするのであれば、私は特定のソリューションについては、この厄介な/ソリューション/カスタムルートに実行し、他の回答のために、それは(恒久的に移動し、エラーを生じる)カスタムリダイレクトを必要とし、にチェック特定のパラメータがnullかどうかを確認してください。

global.asaxファイルでルートデータを抽出し、ルート/ URLを変更する方法はありますか?それが簡単にそこにあるだろう、そして、私は本当にそれが常にそこにあるようにそれを突き刺すことを本当に望んでおり、私はちょうど正常にルートすることができます。

私はおそらく全然分かりませんが、少し不満です。助言がありますか?

+0

私はすべての私のルートのlangパラメータを保持し、ただちに弾丸を噛んで、すべての単一のルートリンクとアクションリンクを変更して、それをroutedataに含めることにしました。しかし、誰かがこれについての解決策を持っているかどうかを知りたいので、私は数日間それを残すでしょう。 – Ryan

+0

私は問題が何であるかについてはあまりよく分かりません。このコードが何をしたいのか、実際に何をしたいのかを説明してください。 – MrBoJangles

答えて

1

私はあなたが達成しようとしていることについて完全には分かっていませんが、それはルートに「強制する」言語ですか?

物事を処理するために独自のRouteHandlerを書くことができますか?

私はblogに類似したものについて書きました。

+0

これは私がやろうとしていることのようなものです。これは私がやりたいことのようなものだと思われるので、あなたは答えのクレジットを与えます。ルートで言語を強制することが最良の解決策であり、おそらくあなたの提案が必要になるでしょう。ありがとう。私はおそらくこれを後で実装するでしょう。 – Ryan

関連する問題