Мое приложение MVC4 имеет форму. В этом случае люди выбирают критерии из полей выбора, а затем выбирают поиск.Как узнать, какой URL-адрес MVC.NET пытается найти
На данный момент он направляет контроллер, который сохраняет значение как TempData
, а затем перенаправляется на правильную целевую страницу.
Таким образом, с видом, после того, как кнопка поиска нажата путь является обувь в моей ProductController
[HttpGet]
public ActionResult Shoes(Shoe shoe)
{
TempData["shoe"] = shoe;
return RedirectToAction("Index", "Shoes", new { SelectedSize = shoe.SelectedSize, SelectedColour = shoe.SelectedColour });
}
Вышеприведенные переадресовывает к
[HttpGet]
public ActionResult Index(Shoes shoes, int startIndex, int pageSize)
{
//logic
}
Мои 2 маршруты
routes.MapRoute(
name: "ShoesA",
url: "Shoes/{startIndex}",
defaults: new { startIndex = 0, pageSize = 10, controller = "ShoesConnectors", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}",
defaults: new { controller = "Home", action = "Index" }
);
Все работает нормально. URL разрешается до http://localhost:52603/Shoes?SelectedSize=12
Что я хочу, это изменить URL-адрес, чтобы не использовать запрос. EG
http://localhost:52603/Shoes?SelectedSize=12
стать
http://localhost:52603/Shoes/12
(я должен отметить, я использую пагинацию по маршруту, так что это будет на самом деле показать http://localhost:52603/Shoes/10/12
где 10
является STARTINDEX)
Таким образом, я добавил следующие маршруты
routes.MapRoute(
name: "ShoesB",
url: "Shoes/{startIndex}/{SelectedSize}/{SelectedColour}",
defaults: new { startIndex = 0, pageSize = 10, controller = "Shoes", action = "Index" }
);
routes.MapRoute(
name: "ShoesC",
url: "Shoes/{startIndex}/{SelectedSize}",
defaults: new { startIndex = 0, pageSize = 10, controller = "Shoes", action = "Index" }
);
routes.MapRoute(
name: "ShoesD",
url: "Shoes/{startIndex}/{SelectedColour}",
defaults: new { startIndex = 0, pageSize = 10, controller = "Shoes", action = "Index" }
);
Когда я нажимаю мою кнопку поиска, я показал страницу 404
Я понимаю, что эта ошибка существует из-за новые маршруты, но я не понимаю, почему он не может найти страницу ...
URL-адрес разрешается, как ожидается, до http://localhost:52603/Shoes/0/12
, но я не знаю, как отладить это.
Почему MVC не может найти правильный контроллер? Чего он пытается решить?