2

RegisterRoutes() にはかなり大きな RouteCollection セットアップがあり、ロシア語の URL をサポートする必要があります。これは、ほとんどの MapRoute() URL がロシア語である必要があることを意味します。

影響を受ける MapRoute() 呼び出しを複製して URL をロシア語に翻訳するのではなく、複数のルート コレクションを作成し、サブドメインに基づいて実行時に使用する MVC を選択できるかどうか疑問に思っています。「ル」?

より多くの言語を追加するにつれて、複数の RouteCollections がないと、より多くのルートが複製され、メンテナンスの問題と非効率的なルーティングが発生します。

ところで、すべてのサブドメインは同じ asp.net mvc アプリケーションにつながり、サブドメイン要素を使用してリソースをグローバル化します。

ルートの例とそのロシア語訳は次のとおりです。

routes.MapRoute(
   "Content", // Route name
   "Page/{id}", // URL with parameters
   new
   {
      controller = "Content",
      action = "Show",
      id = String.Empty
   } // Parameter defaults
);

そしてロシア語で:

routes.MapRoute(
   "Content", // Route name
   "страница/{id}", // URL with parameters
   new
   {
      controller = "Content",
      action = "Show",
      id = String.Empty
   } // Parameter defaults
);

影響を受けるルートは数十あり、サポートされている各言語はそれらすべてを複製します。現時点では、サブドメインのルート制約が最善の方法だと思いますが、言語ごとに個別のルート コレクションと、影響を受けないルートの共有ルートを用意することをお勧めします。

4

1 に答える 1

1

同様のものを使用します:

RouteTable.Routes.MapPageRoute("Language_InfoRoute",
  "{language_code}/{company}/{topic}", 
  "~/content.aspx", true, null, 
  new RouteValueDictionary { { "language_code", "de|fr|en" }, 
  {"company",   "unternehmung|company|entreprise|azienda" } });

Page や страница を個別のルートとして持つ代わりに、プレースホルダー (私の例では会社) として持つこともできます。言語コードを追加するか、ページのさまざまなバージョンを使用して言語を検出できます。

于 2013-04-04T08:05:11.717 に答える