0

次のような URL:

/query/test/p1s1c1

アクションは次のとおりです。

public ActionResult Test(int price = 1, int size = 1, int category = 1)
{
    ViewBag.param = "price:" + price + "size:" + size + "category" + category;
    return View();
}

私のルートマッピングは次のとおりです。

routes.MapRoute(
    "Query", // Route name
    "Query/test/p{price}s{size}c{category}",
    new { controller = "Query", action = "Test", price = UrlParameter.Optional, size = UrlParameter.Optional, category = UrlParameter.Optional },
    new { price = @"\d+", size = @"\d*" , category = @"\d*" } // Parameter defaults 
    );

しかし、それはうまくいきません。誰が私を助けることができますか?

4

2 に答える 2

1

フレームワークが URL 要求を処理するとき、要求の URL を にRoutes追加された順序でルートに一致させようとしますRouteCollection

したがって、デフォルトルートの前にルートを配置すると、機能するはずです。

routes.MapRoute(
                "Query", // Route name
                ///...
                );

routes.MapRoute(
                "Default", // Route name
                ///...
               );

これで url :/query/test/p2s2c2実行された Test アクションには次のパラメーターが含まれます。price = 2, size = 2, category = 2

URL がルートに一致する方法について詳しく読むことができます。

于 2012-04-28T05:58:59.667 に答える
0

これを試してみてください...

routes.MapRoute(
    "Query", // Route name
    "Query/test/{price}/{size}/{category}",
    new { controller = "Query", action = "Test", price = UrlParameter.Optional, size = UrlParameter.Optional, category = UrlParameter.Optional },
    new { price = @"\d+", size = @"\d*" , category = @"\d*" } // Parameter defaults 
    );

そしてそのデフォルトルートの後....

于 2012-04-28T06:08:14.193 に答える