2009-06-25 24 views
3

さらに別の初心者ASP.NET MVC!私はするつもりはすべて、だからここにされて、私は何かを入力し、検索をクリックした場合、URLはstackoverflowの中のように、末尾に次を持つ必要がありますようにリダイレクトされるように、私のページの検索テキストボックスのためにあるasp.netのクエリ文字列にテキストボックス値を渡す方法mvc

/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"} 
     ); 

誰でもここでギャップを埋めることができます:)。コメントは感謝しています。

答えて

2

フォームタグで囲み、 "GET"に設定し、入力タイプ= 'submit'を使用してフォームを送信します( 'a'タグではなく)。 (すでに完了している)パラメータの文字列、コントローラからプロセス要求へのモデル呼び出し、ViewData.Modelの更新、適切なビュー結果の返す(AJAXが使用されている場合は部分的なもの)

あなたが
、ないクエリ文字列のキー/値を通じてURLからクエリを渡したい場合は、そのためのcorrect routeを指定する必要があります。

私はそのようなものだろうと思います:あなたは、フォームでそのクライアント側のコードをラップする必要が

routes.MapRoute( 
      "Search", // Route name 
      "search/{query}", // URL with parameters 
      new 
       { controller = "search", action = "search"} // Parameter defaults 
     ); 
+0

事はそれがうまくいくということです。検索ページとその結果が表示されます。しかし、URLは/ searchのように見えます。私はURLにそれがあるようにそれにクエリ文字列を渡したいと思います。私はjqueryを使用してテキストボックスの値を埋めるために、そのachorタグのhrefを変更することができますが、それは良い解決策ではありません。 – theraneman

+0

フォームを使用してメソッドを "GET"に設定すると、URLは ".../search?q = some text"に自動的に変更されます。 –

+1

彼はそうだ、データを転送するあなたの方法のように聞こえるのは、あなたが本当に欲しいものがあるときだ。GET –

4

:ここ

<form action="/Search" method="get"> 
    <input id="q" name="q" maxlength="100" type="text" /> 
    <input type="submit" id="submit" value="Search" /> 
</form> 
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 
    } 
関連する問題