0

私は MVC ルーティングにまったく慣れていないので、これが些細すぎる場合はご容赦ください。

次のルートを作成しました。

routes.MapRoute("ProductSearch", "Category/{CategoryName}/{CategoryID}/{brandName}/{brandID}", new
        {
            controller = "Search",
            action = "Search"
        });
routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );  

これはアクションに入ります

探す

少なくとも最初のラウンドでは問題ありません(正しいパラメーター値を使用)。その後、永遠にループし続け、パラメーターを失います。何が起こっているのでしょうか?

[編集] 問題は、私が 4 つのプレースホルダーを持っているという事実から来ているようです。2 つのプレースホルダーのみを設定すると、ルートが機能しました。

アクション:

public ActionResult Search(string query = null, int CategoryID = 0, int brandID = -1)
    {   
        WebSearch search = null;

        try
        {
            int loyaltyCardID = -1;
            if (FocusStoreRemoting.UserInfo != null)
            {
                loyaltyCardID = FocusStoreRemoting.UserInfo.LoyaltyCardID;
            }

            if (query != null)
            {
                search = FocusStoreRemoting.Controller.DoWebSearch(FocusStoreRemoting.ClientSession.SessionID,
                   FocusStoreRemoting.StoreID, loyaltyCardID, queryString: query);
            }
            else if (CategoryID >= 0)
            {
                search = FocusStoreRemoting.Controller.DoWebSearch(FocusStoreRemoting.ClientSession.SessionID,
                    FocusStoreRemoting.StoreID, loyaltyCardID, groupID: CategoryID, brandID: brandID);
            }
        }
        catch (Exception ex)
        {
            return RedirectToAction("DisplayError", "Error");
        }



Session[SessionStrings.SearchItems] = search.StockItems;

            return View(search.RefineCategories);
}

前もって感謝します。

[編集2]私が発見したことの1つは、それが永遠にループしているのではなく<head></head>、ページのセクションにリストした各リンク(および外部ファイル)ファイルに対してループしていることです

4

1 に答える 1

0

この問題は、外部ファイルへのリンクによって引き起こされていました。例えば:

次のように外部 JavaScript ファイルを呼び出していました。

src="../../Content/js/whatever"

そのため、ファイルに移動しようとすると、絶対 URL は次のように変換されます。

http://localhost/Category/TestCategory/1/TestBrand/1/Content/js/whatever

どの MVC のルーティングがSearch、質問で言及されたアクションにルーティングされていたか。したがって、実際には「永遠にループする」のではなく、ページに含まれるすべての画像/コンテンツ ファイルに対してです。

../../相対URLの変更を削除することでこれを解決しました/Content/js/whatever

于 2013-06-05T14:29:02.083 に答える