Я пытаюсь настроить схему маршрутизации в MVC3, которая соответствует устаревшей системе (SP 2007).Вот маршруты, которые я настроил:
routes.MapRoute("administration",
"Administration/{action}/{id}",
new { controller = "Administration", action = "Index", id = UrlParameter.Optional });
routes.MapRoute("workOrderSearch",
"WorkOrderSearch",
new {controller = "Home", action = "WorkOrderSearch"});
routes.MapRoute("customers",
"{customerNumber}/{action}",
new {controller = "customer", action = "Index"},
new {customerNumber = @"\d*"});
routes.MapRoute("graphicNames",
"{customerNumber}/{graphicNameId}/{action}/{id}",
new {controller="GraphicName", action="Index", id=UrlParameter.Optional},
new {customerNumber = @"\d*",graphicNameId = @"\d*", action=@"\w*"});
routes.MapRoute("workOrders",
"{customerNumber}/{graphicNameId}/{graphicNumber}/WorkOrder/{action}/{id}",
new { controller = "WorkOrder", action = "Index", id = UrlParameter.Optional },
new { graphicNameId = @"\d*", graphicNumber = @"\d*-\d*" });
routes.MapRoute("graphics",
"{customerNumber}/{graphicNameId}/{graphicNumber}/{action}",
new { controller = "Graphic", action = "Index", id = UrlParameter.Optional },
new { graphicNameId = @"\d*", graphicNumber = @"\d*-\d*" });
routes.MapRoute("Default", "", new { controller = "Home", action = "Index", id = UrlParameter.Optional });
В основном работает просто отлично.Однако при попытке попасть по маршруту «graphicNames» я столкнулся с проблемой.Если я использую этот URL:
http://localhost:1234/1234/321/Index
, он работает нормально, и я получаю действие Index на контроллере GraphicName.Однако, если я сделаю это:
http://localhost:1234/1234/321
, я получу 404.
Все остальные маршруты работают должным образом.
Редактировать:Решением было добавить ограничение в маршрут клиента, чтобы действия были только 'action = @ "[A-Za-z] *"