Оригинальное название: Невозможно исправить неверно настроенные маршруты
Я хочу сделать поиск на основе фильтра (с 4 возможными значениями) и критериев, введенных пользователем.
У меня есть следующие маршруты:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"SubLineasProductosDefault",
"SubLineasProductos.aspx/Create",
new { controller = "SubLineasProductos", action = "Create" }
);
routes.MapRoute(
"SubLineasProductosSearch",
"SubLineasProductos/Buscar.aspx/{filtro}/{criterio}",
new { controller = "SubLineasProductos", action = "Buscar"}
);
routes.MapRoute(
"SubLineasProductos",
"SubLineasProductos.aspx/{id}",
new { controller = "SubLineasProductos", action = "Index", id = "" }
);
routes.MapRoute(
"Default",
"{controller}.aspx/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
routes.MapRoute("Root", "", new { controller = "Home", action = "Index",
id = "" });
и следующую форму:
<% using (Html.BeginForm("Buscar", "SubLineasProductos",
FormMethod.Get)) { %>
<%= Html.Hidden("filtro", "nombre") %>
<%= Html.TextBox("criterio") %>
<button type="submit" title="Buscar">
<img src='<%= Url.Content("") %>' alt="" />
</button>
<% } %>
Форма перенаправляет не на действие Buscar, а на индекс действия в контроллере SubLineasProductos. Я думаю, что у меня неправильные маршруты, но я не знаю, как их исправить. Я прочитал этот пост , и насколько я вижу, все в порядке на моих маршрутах.
Как я могу это исправить? Заранее спасибо.
РЕДАКТИРОВАТЬ: С помощью инструмента, предоставленного Филом, я могу видеть, что если я проверяю URL, как
http://localhost/MyApp/SubLineasProductos/Buscar.aspx/nombre/block
соответствует маршруту, который я хочу. Но когда я запускаю свое приложение и пытаюсь использовать форму, опубликованную до того, как сгенерированный URL-адрес имеет форму:
http://localhost/MyApp/SubLineasProductos.aspx/Buscar?filtro=nombre&criterio=block
Как я могу исправить эту новую проблему?