2011-05-20 23 views
2

Actualy我通過在URL中傳遞的文化像ASP.NET MVC 3.0根重定向本地化網站

http://mysite.com/en-US/

在全球我用下面的路線句柄全球化對我的ASP.NET MVC 3.0網站

的.asax
  routes.MapRoute("Default", "{language}-{culture}/{controller}/{action}/{id}", 
         new 
          { 
           controller = "Home", 
           action = "Index", 
           id = UrlParameter.Optional, 
           language = "fr", 
           culture = "FR" 
          }); 

現在我需要重定向用戶訪問該網站http://mysite.com的根目錄下的默認區域性或默認瀏覽器文化http://mysite.com/en-US

其實用戶在訪問沒有文化規範的根網址時遇到了404錯誤。

我該如何執行此操作?

謝謝。

回答

1

我認爲你真的需要兩條路線,在路線的長形式中,你需要一個constraint來避免路線衝突(實際上你可能不會因爲你使用破折號「 - 」,只要你沒有破折號在控制器名稱中)。像這樣的東西: -

routes.MapRoute("Default", "{language}-{culture}/{controller}/{action}/{id}", 
    new 
     { 
      controller = "Home", 
      action = "Index", 
      id = UrlParameter.Optional, 
     } 
    , 
    new 
     { 
      language = @"[a-z][a-z]|^", 
      culture = @"[A-Z][A-Z]|^" 
     }); 

routes.MapRoute("DefaultLocale", "{controller}/{action}/{id}", 
    new 
     { 
      controller = "Home", 
      action = "Index", 
      id = UrlParameter.Optional, 
      language = "fr", 
      culture = "FR" 
     });