さて、私は見つけられるかもしれない他のすべてのスタック記事をグーグルでチェックアウトして、少なくとも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を変更する方法はありますか?それが簡単にそこにあるだろう、そして、私は本当にそれが常にそこにあるようにそれを突き刺すことを本当に望んでおり、私はちょうど正常にルートすることができます。
私はおそらく全然分かりませんが、少し不満です。助言がありますか?
私はすべての私のルートのlangパラメータを保持し、ただちに弾丸を噛んで、すべての単一のルートリンクとアクションリンクを変更して、それをroutedataに含めることにしました。しかし、誰かがこれについての解決策を持っているかどうかを知りたいので、私は数日間それを残すでしょう。 – Ryan
私は問題が何であるかについてはあまりよく分かりません。このコードが何をしたいのか、実際に何をしたいのかを説明してください。 – MrBoJangles