2013-11-26 127 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