ASP.NET MVC 3.0 Root Redirect для локализованного веб-сайта - PullRequest
2 голосов
/ 20 мая 2011

На самом деле, я обрабатываю глобализацию для своего веб-сайта ASP.NET MVC 3.0, передавая культурный адрес в URL, например

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.

На самом деле пользователи получили ошибку 404 при доступекорневой URL без спецификации культуры.

Как мне это сделать?

Спасибо.

1 Ответ

1 голос
/ 20 июня 2011

Я думаю, что вам действительно нужны два маршрута, в длинной форме маршрута вам нужно ограничение , чтобы избежать столкновения маршрутов (на самом деле вы можете этого не делать, поскольку вы используете тире "-", если как у вас нет тире в именах контроллеров). Примерно так: -

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