2013-11-26 173 views
0

尝试为我当前的mvc项目设置本地化。 我需要配置路由以支持这两个URL:使用和不使用语言(例如www.domain.com/en/about/contacts和www.domain.com/about/contact)。默认语言URL中没有lang的路由。如何在多语言asp.net MVC网站的URL中支持带和不带语言的路由

我定义路由这样

  routes.MapRoute(
      name: "Localization", 
      url: "{lang}/{controller}/{action}/{identifier}", 
      defaults: new { lang = defaultLang, controller = "Home", action = "Index", identifier = UrlParameter.Optional } 
     ); 

,但我不能满足一个重要的要求 - 我的默认语言的路线应该是唯一的,直到用户在URL“郎少”指定所需的语言。即使该语言== defaultLanguage我需要我的路由包括它(lang),因为它是由用户选择的。

回答

0

解决!

的@本地化@路线应该是这样的:

routes.MapRoute(
      name: "Localization", 
      url: "{lang}/{controller}/{action}/{identifier}", 
      defaults: new { controller = "Home", action = "Index", identifier = UrlParameter.Optional }, 
      constraints: new { lang = @"[a-z]{2}" } 
     ); 
  • 没有默认值应为郎提供
  • 它需要我补充约束郎帮助路由器识别的网址并且没有lang_s