Форма публикуется не по адресу - PullRequest
0 голосов
/ 22 июля 2009

Оригинальное название: Невозможно исправить неверно настроенные маршруты

Я хочу сделать поиск на основе фильтра (с 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

Как я могу исправить эту новую проблему?

1 Ответ

3 голосов
/ 22 июля 2009

Вы пробовали использовать отладчик маршрута, который я разместил здесь: http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

...