-1

Что мне нужно сделать, чтобы нанести на карту эти URL-адреса на мои маршруты?MVC4 Routing Подпапка Каталог для оформления заказа

example.com/checkout?o=1234 
example.com/checkout/shipping?o=1234 
example.com/checkout/payment?o=1234 
example.com/checkout/review?o=1234 
example.com/checkout/receipt?o=1234 

В RouteConfig, у меня есть они определены:

routes.MapRoute(
     name: "Checkout", 
     url: "checkout", 
     defaults: new { controller = "Checkout", action = "Index", o = UrlParameter.Optional } 
    ); 

routes.MapRoute(
      name: "checkout Prefix", 
      url: "Checkout/{controller}/{action}/{o}", 
      defaults: new { controller = "Shipping|Payment|Review|Receipt", action = "Index", o = UrlParameter.Optional } 
     ); 

папки контроллера являются:

Controllers 
     CheckoutController.cs 
      Checkout 
       ShippingController.cs 
       PaymentController.cs 
       ReviewController.cs 
       ReceiptController.cs 

При переключении на заказ и но заказ Префикс во-первых, это портит маршрут «checkout? o =». Когда я сначала поставлю маршрут Checkout, второй никогда не попадает.

ответ

1

Ваше предположение, что o является составной частью маршрута. Строки запроса не оцениваются как часть совпадения.

Кроме того, вы должны указывать регулярное выражение в ограничении, а не как значение по умолчанию.

routes.MapRoute(
    name: "Checkout", 
    url: "checkout", 
    defaults: new { controller = "Checkout", action = "Index" } 
); 

routes.MapRoute(
    name: "checkout Prefix", 
    url: "checkout/{controller}", 
    defaults: new { action = "Index" }, 
    constraints: new { controller = "Shipping|Payment|Review|Receipt" } 
); 
Смежные вопросы