создание более одного маршрута в asp.net mvc - PullRequest
1 голос
/ 06 мая 2011

я пытаюсь создать маршруты в asp.net mvc

    routes.MapRoute(
        "Localization", // Route name
        "{Culture}/{controller}/{action}/{id}", // URL with parameters
        new { Culture = "en-US", controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );
    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}", // URL with parameters
        new { controller = "Home", action = "Index"} // Parameter defaults
    );

концепция проста ... контроллер должен иметь возможность вызываться через en-us / Controller / Action или controller / action ...это возможно?

1 Ответ

2 голосов
/ 06 мая 2011

Ограничения маршрута

Вы должны будете использовать ограничение маршрута на первом маршруте, который определит, как должна формироваться строка культуры.Вместо этого попробуйте следующее определение маршрута:

routes.MapRoute(
    "Localization",
    "{Culture}/{controller}/{action}/{id}",
    new { Culture = "en-US", controller = "Home", action = "Index", id = UrlParameter.Optional },
    new { Culture = @"\w{2}(?:-\w{2})?" }
);
routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Регулярное выражение ограничения маршрута не совсем корректно, поскольку, насколько я могу вспомнить, существуют культуры с трехбуквенными кодами.Определенное мной регулярное выражение допускает и общие культуры, такие как:

/en/Controller

или

/en-US/Controller
/en-UK/Controller

Подгонка по вашему вкусу.

...