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);
}

提前致谢。

[Edit2] 我发现的一件事是它不会永远循环,而是对于我在<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 回答