2011-05-20 2 views
2

-je gérer la mondialisation actualy pour mon site Web ASP.NET MVC 3.0 en passant la culture dans l'URL commeASP.NET MVC 3.0 Racine Redirect pour Localized Web Site

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

J'utilise la route suivante dans Global .asax

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

maintenant je dois rediriger les utilisateurs accédant à la racine du site Web http://mysite.com à la culture de la culture par défaut ou le navigateur par défaut http://mysite.com/en-US.

En fait, les utilisateurs ont une erreur 404 lors de l'accès à l'URL racine sans spécification de culture.

Comment puis-je effectuer cela?

Merci.

Répondre

1

Je pense que vous avez vraiment besoin de deux routes, dans la forme longue de la route, vous avez besoin d'un constraint pour éviter les conflits d'itinéraires (en fait vous ne pouvez pas puisque vous utilisez un tiret - ", tant que vous n'avez pas de tirets dans les noms de contrôleurs). Quelque chose comme ceci: -

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" 
     }); 
Questions connexes