0

これが私のRouteConfig.cs

routes.MapRoute(null,
                        "{controller}/Page{page}",
                        new {controller = "Product", action = "Index", category = (string) null},
                        new {page = @"\d+"}
            );

        routes.MapRoute(null,
                        "{controller}/{category}",
                        new {controller = "Product", action = "Index", page = 1}
            );

        routes.MapRoute(null,
                        "{controller}/{category}/Page{page}",
                        new {controller = "Product", action = "Index"},
                        new {page = @"\d+"}
            );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

URL を生成するコードは次のとおりです。

@Html.ActionLink("View Cart", "Index", "ShoppingCart", null, new { @class = "btn btn-orange" })

Product/Page2たとえば、、、Product/Laptopに移動するとうまく機能しProduct/Laptop/Page2ます。問題は、現在の URL にPageセグメントが含まれるたびに、発信 URL を生成するためにそのセグメントを再利用しようとすることです。したがって、Product/Page2上記の生成された URL にいる場合は、 ShoppingCart/Page2. これを回避する方法がわかりません。

私を助けてください。どうもありがとう。

編集!!!

私は回避策を見つけました。を使用する代わりに、次のようActionLinkに使用します。RouteLink

@Html.RouteLink("View Cart", "Default", new { controller = "ShoppingCart", action = "Index" }, new { @class = "btn btn-orange" })

でもまだまだ使いたいActionLinkので助けてください。

編集!!!

へのリンクを生成すると、回避策が機能しませんShoppingCart/Checkout。それでもコントローラーでIndexアクションを起こす必要があります。ShoppingCart

4

2 に答える 2

1

ShoppingCart に固有の新しいルート パターンを作成し、それを TOP に配置して最初のルートにします。

    routes.MapRoute(null,
                    "ShoppingCart/{action}",
                    new {controller = "Product"});
        );

原則として、特定のルートはすべて最初に来る必要があります。

于 2014-01-17T10:33:54.670 に答える