用于本地化网站的ASP.NET MVC 3.0根重定向

时间:2011-05-20 16:23:30

标签: asp.net-mvc globalization

Actualy我通过将文化传递到像

这样的网址来处理我的ASP.NET MVC 3.0网站的全球化

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

我在Global.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

实际上,在没有文化规范的情况下访问根URL时,用户会收到404错误。

我该怎么做?

感谢。

1 个答案:

答案 0 :(得分: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"
        });