2013-05-24 2 views
0

Я новичок в маршрутизации MVC, поэтому, пожалуйста, несите меня, если это слишком тривиально.ASP.NETMVC routing looping forever

Я создал следующий маршрут:

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

Это входят в действие

Поиск

просто отлично, по крайней мере первый раунд времени (с соответствующими значениями параметров). Затем он будет продолжать цикл навсегда и потерять параметры. Любая идея, что может произойти?

[EDIT] Вопрос, похоже, исходит из того факта, что у меня есть 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> части страницы

+0

Когда вы говорите «зацикливание», вы имеете в виду, что перенаправляет в цикле? –

+0

Вы звоните в одно и то же действие контроллера вместо того, чтобы возвращать ViewResult? – hutchonoid

+0

@QuetiMporta Да и [@] Хатчоноид Нет, я нет. Действие отлично работает с маршрутизацией по умолчанию – Jonny

ответ

0

Проблема была быть вызвана по ссылкам на внешние файлы. Например:

Я звала внешние JavaScript-файлы, как так:

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

Так, при попытке перейти к файлу, абсолютный URL будет переведен на:

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

Какие MVC-х маршрутизация была направлена ​​на действие Search, упомянутое в Вопросе. Так на самом деле это было не «Looping Forever», а для каждого файла изображения/контента, содержащегося на странице.

Я решил эту проблему путем удаления ../../ изменения относительного URL в /Content/js/whatever