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 回答