不同的URL取决于ASP.net中的语言/文化

时间:2011-06-07 08:21:58

标签: asp.net-mvc-3 localization routing

在支持多种文化的网站中,我打算采用以下路线:

routes.MapRoute(
             "ProductsStartPage",
             "{lang}/Products",
             new { lang = defaultLanguage, controller = "Products", action = "Index" }
        );
        routes.MapRoute(
            "ProductsCategoryPage",
            "{lang}/Products/{category}",
            new { lang = defaultLanguage, controller = "Products", action = "Category" }
        );
        routes.MapRoute(
            "ProductPage",
            "{lang}/Products/{category}/{product}",
            new { lang = defaultLanguage, controller = "Products", action = "Product" } 
        );

第二种语言将在网址中使用 Produkter 而非产品

如果不为每种语言/文化创建另一个MapRoute,我将如何继续完成这项工作?

1 个答案:

答案 0 :(得分:2)

我不会害怕为每种语言创建另一条路线。

路线中控制器的值是必不可少的。这是您要更改的值,因此您需要一个可以为每种语言保留不同值的位置。

然后,在映射路由时,我只需循环访问支持的语言,并为您支持的每种语言调用MapRoute,并提供控制器名称的本地化值。

请注意,您需要唯一的路由名称,因此您应在循环中追加或添加语言名称/代码,以便创建具有唯一名称的路由。