我的网站上有这样的网址: www.mysite.com/controller/action/id
我需要为其他语言(英语)创建网址,因此我使用了MultiCultureMvcRouteHandler的ALEX ADAMYAN实现。所以现在我有这样的网址:
www.mysite.com/en/controller/action/id
www.mysite.com/fr/controller/action/id
但是我需要保持我的旧网址有默认值,即具有:
www.mysite.com/en/controller/action/id
www.mysite.com/controller/action/id
所以我想知道如何修改路由,在他的实现中,alex循环路由并将en / fr参数添加到所有路由,以便覆盖以前的路由,然后删除以前的URL,我想要避免的。
如果我复制所有路由以保持一个与fr / en和一个没有它不起作用,可能是因为订单在路径集合中丢失了?
答案 0 :(得分:2)
我解决了循环遍历所有语言的问题:
public static List<Language> Languages;
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
LanguageRepository langRepo = new LanguageRepository();
Languages = langRepo.GetAllLanguages();
foreach (Language language in Languages)
{
routes.MapRoute(
"Localization_" + language.LanguageAbbreviation,
language.LanguageAbbreviation + "/{controller}/{action}/{id}",
new { lang = language.LanguageAbbreviation, controller = "Home", action = "Index", id = UrlParameter.Optional });
}
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new {lang = "en", controller = "Home", action = "Index", id = UrlParameter.Optional });
}
其中langabbreviation喜欢“en”或“ru”。
最后一条路线是“默认”“无法语言”网址,例如“www.site.com/controller/action”,你需要为它设置默认的lang abbr(在我的例子中为“en”)。
希望它会有所帮助。