Я мигрирую сайт с ASP.NET MVC 1 на ASP.NET MVC 2. На данный момент сайт поддерживает следующие маршруты:
/{country}/{language}/{controller}/{action}
/{country}/{controller}/{action}
/{language}/{controller}/{action}
/{controller}/{action}
Форматы для country
и language
различаются в Regex и имеют подходящие ограничения. В MVC 1 я зарегистрировал каждый из них как отдельный маршрут - для каждой из приблизительно 20 комбинаций. В MVC 2 я пытался заставить ту же самую вещь работать с одним маршрутом, чтобы покрыть все четыре случая, используя UrlParameter.Optional
, но я не могу заставить его работать - если я определяю country
и language
как оба необязательны, тогда маршрут /Home/Index
, например, не соответствует маршруту. Вот что я пытаюсь сделать:
routes.MapRoute("Default",
"{country}/{language}/{controller}/{action}",
new { country = UrlParameter.Optional, language = UrlParameter.Optional,
controller = "Home", action = "Index" },
new { country = COUNTRY_REGEX, language = LANGUAGE_REGEX });
Это просто невозможно, потому что мои опции находятся в начале маршрута, или я просто что-то упустил? Я не могу найти какую-либо документацию, чтобы сказать мне, что я делаю, невозможно или указать мне правильное направление.