2010-02-08 2 views
0

Я попытался использовать решение, объясненное в http://weblogs.asp.net/paulomorgado/archive/2010/01/31/web-site-globalization-with-asp-net-routing.aspx, чтобы локализовать мое приложение, используя параметр языка на моих маршрутах.Проблема с глобализацией маршрутов MVC ASP.NET

Вот код, у меня в Global.asax:

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

     routes.Add("en", new Route("en/{*path}", new GlobalizationRouteHandler(CultureInfo.GetCultureInfo("en-US")))); 
     routes.Add("fa", new Route("fa/{*path}", new GlobalizationRouteHandler(CultureInfo.GetCultureInfo("fa-IR")))); 

     routes.MapRoute(
      "AdminHome", 
      "{language}/admin", 
      new { controller = "Admin", action = "Index" } 
     ); 

    } 

Но когда я указываю мой браузер/ен/администратор или/FA/админ Я получаю сообщение об ошибке 404.

Я попробовал этот тоже:

routes.MapRoute(
     "AdminHome", 
     "admin", 
     new { controller = "Admin", action = "Index" } 
    ); 

Но все-таки ошибка 404 для/ан/админ - (в данном случае "/ администратора" работает.)

Любая идея?

+0

Я получил несколько путеводителей от парня, который написал оригинальный код, и он предложил мне написать правила моих маршрутов до GlobalizationRouteHandler. Я не пробовал этого, потому что использовал другой подход. Вы можете проверить его и сообщить нам результат;) –

ответ

0

У меня очень похожий шаблон маршрута на моем собственном сайте MVC.

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

двух основных различий, которые я вижу в том, что я указать {действие} в моем пути, и я также взывать первый маршрут из параметров в качестве параметра в моем объекте («blogSubFolder =„“,»).

Теперь я просто провел некоторое тестирование, и я нашел то же поведение, что и вы, я вытаскиваю {действие} из своего маршрута, и я получаю 404. Но если я укажу действие, все будет работать.

Итак, я создал новый проект с маршрутом по умолчанию, и мне не нужно указывать действие, оно по умолчанию имеет индекс, как и ожидалось. Затем я добавляю новый маршрут, где я указываю контроллер {language}/Foo/{action}, и я продолжаю получать ошибки, если я не включаю индекс в свой url. Короче говоря, почти так же, как я могу определить, есть ли у вашего маршрута переменная, которая предшествует контроллеру, вы должны указать действие в своем URL-адресе.

 Смежные вопросы

  • Нет связанных вопросов^_^