路由不起作用-URL中的ASP.NET MVC 3本地化区域设置



我正在根据路线数据本地化我的MVC3站点。例如,http://domain/fr应以法语显示网站,http://domain应默认为英语。。。以下是我在Global.ascx.中注册路线的方式

我的问题是http://domain/fr/Home/Index将工作,但http://domain/Home/Index将显示未找到资源的错误,通过调查,它告诉我路由表正在将"Home"映射到{lang}

我错过了什么?

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
        );
    }
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个字符,就应该做到这一点:)

最新更新