-1

これらのURLをルートにマップするにはどうすればよいですか? RouteConfigでチェックアウトのためのMVC4ルーティングサブフォルダディレクトリ

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 

、私はこれらの定義されています:

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 

台無し"チェックアウト?o ="ルート。 Checkoutルートを最初に置くと、2番目のルートは決してヒットしません。

答えて

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" } 
); 
関連する問題