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 に答える