3

ASP.NET MVCのさらに別の初心者!私がやろうとしているのは、ページ上の検索テキストボックスです。何かを入力して[検索]をクリックすると、リダイレクト先のURLは、stackoverflowのように、最後に次のようになります。

/search?q=searchedtext

これが私が今持っているものです、

<input id="searchText" maxlength="100" type="text" name="query" />
    <a href="???"  class="searchButton">        
        Search        
    </a>

私のコントローラーにはこのような機能がありますが、

public ActionResult Search(string query)
 {

 }

これがルートです、

routes.MapRoute(
            "Search",                                            
            "Search",                          
            new { controller = "Posts", action = "Search"} 
        );

誰でもここでギャップを埋めることができますか:)。コメントをいただければ幸いです。

4

3 に答える 3

4

そのクライアント側のコードを次の形式でラップする必要があります。

<form action="/Search" method="get">
   <input id="q" name="q" maxlength="100" type="text" />
   <input type="submit" id="submit" value="Search" />
</form>
于 2009-06-25T07:33:15.577 に答える
3

フォームタグでラップし、メソッドを「GET」に設定し、フォームの送信にinput type ='submit'を使用し('a'タグの代わりに)、テキスト入力にクエリとして名前を付け(すでに完了)、パラメータの文字列としてクエリを受け入れます(すでに完了しています)、コントローラーからモデルを呼び出してリクエストを処理し、ViewData.Modelを更新して、適切なビュー結果を返します(AJAXが使用されている場合は部分的)。

クエリ文字列のキー/値ではなくURLを介してクエリを渡す場合は、そのための正しいルート
を 指定する必要があります。

私はそれが次のようなものになると思います:

routes.MapRoute(  
            "Search", // Route name  
            "search/{query}", // URL with parameters  
            new 
              { controller = "search", action = "search"}  // Parameter defaults
        );
于 2009-06-25T07:32:09.337 に答える
0

これが私がしたことです:

<% Html.BeginForm("Search", "controller name", FormMethod.Get); %>
        <input id="criteria" name="criteria" maxlength="120" type="text" style="width:120px; " />
        <input type="image" alt="search" />
    <% Html.EndForm(); %>

public ActionResult Search(string criteria)
    {
       //search code goes here
    }
于 2009-08-04T12:09:44.653 に答える