表单发布到错误的URL

时间:2009-07-22 01:48:39

标签: asp.net-mvc routing asp.net-mvc-routing

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

我想基于过滤器(有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控制器中的动作索引。我想我的路线错了,但我不知道如何修理它们。我已经阅读了this post,而且我可以看到我的路线上一切都很好。

我该如何解决这个问题?提前谢谢。

编辑:使用Phil提供的工具我可以看到,如果我测试一个像

这样的网址
  

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

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

  

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

如何解决这个新问题?

1 个答案:

答案 0 :(得分:3)

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