0

デフォルトを除いて2つのルートがあります:

routes.MapRoute("ShopDefault",
                "Shop/{id}/{action}",
                new { controller = "Shop" });
routes.MapRoute("Shop",
                "Shop/{id}/List/{categoryID}",
                new { controller = "Shop", action = "List"});

最初のルートは完全に機能し、のようなリンク.../Shop/3/Index.../Shop3/Messages正しく処理されます。

しかし、2番目のルートの場合-のようなリンク.../Shop/3/List/5は見つかりません。誰もが理由を知っていますか?

4

1 に答える 1

3

より明示的なルートが最初にあるはずです。ルーティング エンジンは Shop/Id/Action を ShopDefault で照合しようとしていますが、おそらく失敗して、Shop のより明示的なルートに到達する前に 404 が返されます。

ルートを逆の順序で配置する必要があります。

            routes.MapRoute(
                "Shop",
                "Shop/{id}/List/{categoryID}",
                new { controller = "Shop", action = "List"},
                new { id= @"\d+" }

            routes.MapRoute(
                "ShopDefault",
                "Shop/{id}/{action}",
                new { controller = "Shop" });
于 2012-09-14T15:35:06.770 に答える