0

原标题:无法修复配置错误的路线

我想根据过滤器(有 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 控制器中的动作 Index。我想我的路线错了,但我不知道如何修复它们。我已经阅读了这篇文章,并且我可以看到我的路线一切都很好。

我怎样才能解决这个问题?提前致谢。

编辑:使用 Phil 提供的工具,我可以看到,如果我测试类似的 URL

http://localhost/MyApp/SubLineasProductos/Buscar.aspx/nombre/block

它符合我想要的路线。但是当我运行我的应用程序并尝试使用在生成的 URL 具有表单之前发布的表单时:

http://localhost/MyApp/SubLineasProductos.aspx/Buscar?filtro=nombre&criterio=block

我该如何解决这个新问题?

4

1 回答 1

3

您是否尝试过使用我在此处发布的路由调试器:http: //haacked.com/archive/2008/03/13/url-routing-debugger.aspx

于 2009-07-22T02:50:07.003 回答