2011-05-20 36 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" 
     });