4

カスタム MvcRouteHandler を提供した経験のある人はいますか? 私のアプリケーションでは、http://mydomain/en/aboutまたはhttp://mydomain/de/aboutのようなグローバリゼーション パターンを実装したいと考えています。

永続性に関しては、リクエストが到着するとすぐに Cookie を読み取って、この Cookie に言語設定がある場合はそれを適用したいと思います (したがって、http://mydomain/に到着したユーザーは http:/に転送されます)。 /mydomain/en/など)。Cookie が存在しない場合は、ブラウザーがサポートする最初の言語を取得し、これを適用して、この Cookie に保存します。

これは、mvc が最初のプロジェクト テンプレートで提供する標準のルーティング メカニズムでは実行できないと思います。ニュースグループで、MvcRouteHandler を見て、独自のものを実装するためのヒントを得ました。しかし、それを行う方法のサンプルを見つけるのは難しい.

何か案は?

4

2 に答える 2

2

あなたがしていることにカスタムルートハンドラーが必要だとは思いません。

「グローバル化された」URI の場合は、通常の MVC ルートで、「locale」パラメーターが「en」、「de」などと等しくなければならないという制約があります。この制約により、グローバル化されていない URI がルートに一致することが防止されます。

「グローバル化されていない」URI の場合は、単にデフォルトまたは Cookie 設定のロケール URI にリダイレクトする「キャッチオール」ルートを作成します。

「グローバル化された」ルートを Global.asax の「キャッチオール」ルートの上に配置して、「既にグローバル化された」URI がリダイレクトに失敗しないようにします。

特定の URI パターンでコントローラーのアクションではない何かをトリガーする場合は、新しいルート ハンドラーを作成する必要があります。しかし、それはあなたがここで扱っているものではないと思います。

于 2008-09-17T17:55:42.143 に答える
0

ASP.NET MVC の既定のテンプレートでこれを行うことができるはずです。私は似たようなことをしています。ルートを {language}/{controller}/{action}/{id} として構築するだけです

言語 Cookie をチェックするコントローラーに行くデフォルト ルートを設定し、その Cookie に基づいてユーザーをリダイレクトするだけです。

于 2008-09-17T17:49:04.793 に答える