1

PartnerController には次のコントローラー アクションがあり、それぞれに独自のカスタム ルーティングがあります。

アクション 1

public ActionResult GetCardWithShortCode(string voucherShortCode)

routes.MapRoute( "GetCardWithShortcode", "partner/store/getcard/{voucherShortCode}", new { controller = "Partner", action = "GetCardWithShortCode" } );

アクション 2

public ActionResult GetCard()

routes.MapRoute( "GetCard", "partner/store/getcard", new { controller = "Partner", action = "GetCard"} );

最初のルーティングは正常に機能しますが、2 番目のルーティングが機能しません。理論的には、../partner/store/getcard をヒットすると、2 番目のアクションにヒットするはずですか?

何か案は?

4

2 に答える 2

0

最初のアクションが代わりに {voucherShortCode} null で呼び出されるため、2 番目のアクションはヒットしません。

できることは、1 つのルートだけを使用して次のことを行うことです。

if(String.IsNullOrEmpty(voucherShortCode))
    return RedirectToAction("GetCard")

そうすれば、2 つのルートは必要ありません。

于 2013-03-11T13:16:21.743 に答える
0

ルートを追加するときは、次の順序にする必要があります

routes.MapRoute( "GetCard", "partner/store/getcard", new { controller = "Partner", action = "GetCard"} );


routes.MapRoute( "GetCardWithShortcode", "partner/store/getcard/{voucherShortCode}", new { controller = "Partner", action = "GetCardWithShortCode" } );
于 2013-03-11T13:16:32.167 に答える