Asp.net mvc ASP.NETMVC路由永远循环

Asp.net mvc ASP.NETMVC路由永远循环,asp.net-mvc,routing,routes,asp.net-mvc-routing,Asp.net Mvc,Routing,Routes,Asp.net Mvc Routing,我对MVC路由非常陌生,所以如果这太琐碎,请容忍我 我创建了以下路线: routes.MapRoute("ProductSearch", "Category/{CategoryName}/{CategoryID}/{brandName}/{brandID}", new { controller = "Search", action = "Search" }); routes.MapRoute(

我对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个占位符这一事实。当我只设置了两个占位符时,路线就起作用了

行动:

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);
}
提前谢谢

[编辑二]
有一件事我发现它不是永远循环的,而是我在页面的
部分列出的每个链接(以及任何外部文件)文件的问题都是由指向外部文件的链接引起的。例如:

我是这样调用外部JavaScript文件的:

src="../../Content/js/whatever"
因此,当尝试导航到该文件时,绝对URL将转换为:

http://localhost/Category/TestCategory/1/TestBrand/1/Content/js/whatever
哪个MVC的路由被路由到问题中提到的
Search
操作。 所以实际上,它不是“永远循环”,而是页面包含的每个图像/内容文件


我通过删除
。/../
将相对URL更改为
/Content/js/无论什么

解决了这个问题。当你说“永远循环”时,你的意思是它在循环中重定向吗?你是在调用同一个控制器操作而不是返回ViewResult吗?@QuetiMporta是和[@]Hutchonoid否我不是。该操作可以与默认路由一起正常工作。您可以包括执行重定向的操作方法吗?我猜您的路由正在将您的搜索操作和您的搜索操作重定向到的任何内容路由到同一个方法,但我们需要查看操作方法来确认这一点。