0

我正根據路由數據本地化我的MVC3站點。例如,http://domain/fr應該用法語顯示該網站,http://domain應該默認爲英文...下面是我如何在Global.ascx中註冊我的路線。路由不工作 - ASP.NET MVC 3 URL中的本地化區域設置

我的問題是,http://domain/fr/Home/Index將工作,但http://domain/Home/Index會顯示未找到錯誤的資源,並與調查它告訴我的路由表映射「家」 {}郎

我缺少什麼?

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.IgnoreRoute("favicon.ico"); 

     routes.MapRoute(
      "LogOn", // Route name 
      "Account/{action}", // URL with parameters 
      new { controller = "Account", action = "LogOn" } // Parameter defaults 
     ); 

     routes.MapRoute(
      "Localization", // Route name 
      "{lang}/{controller}/{action}", // URL with parameters 
      new { UrlParameter.Optional, controller = "Home", action = "Index"} // Parameter defaults 
     ); 

     routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}", // URL with parameters 
      new { controller = "Home", action = "Index"} // Parameter defaults 
     ); 

    } 

回答

2
routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}", // URL with parameters 
      new { controller = "Home", action = "Index"}, // Parameter defaults 
      new { controller = "[a-zA-Z]{3,}" } //regexp constraint on controller name 
     ); 

routes.MapRoute(
      "Localization", // Route name 
      "{lang}/{controller}/{action}", // URL with parameters 
      new { UrlParameter.Optional, controller = "Home", action = "Index"} // Parameter defaults 
     ); 

應該做的伎倆,只要你所有的控制器名稱是超過2個字符:)

+1

+1的REGEXT想法不再 – Laguna