2011-01-12 10 views
0

サブミット時にテキストボックス値を使用してクエリ文字列に使用するにはどうすればよいですか?私はそれがこの、サブミット時のテキストボックス値をクエリ文字列変数として使用

/ニュース?お気に入り= Trueの

として起動し、ユーザーが検索で入力し、検索をクリックした後、このような何かを終了したいと思います。

/ニュース?クエリ= Trueのテスト&お気に入り=

コントローラのアクションは、このquestionは私がやりたいものに近いものである。この

public ActionResult Index(string query,bool favorites) 
{ 
    //search code 
} 

のように見えますが、私がしたいですクエリ文字列を使用して、クエリ文字列の既存の値を維持します。

ありがとうございました。

答えて

5

2つの可能性:

  1. 場所(リダイレクトを実行するwindow.locationをAJAXまたは)値を読み取り、サーバに渡すためのJavaScript <form>
  2. method="GET"で使用する内部テキストボックス

例:<form>

<% using (Html.BeginForm("index", "news", FormMethod.Get)) { %> 
    <label for="query">Query:</label> 
    <%= Html.TextBox("query") %> 
    <input type="submit" value="Search" /> 
<% } %> 

JavaScriptを使用して例:

<label for="query">Query:</label> 
<%= Html.TextBox("query") %> 
<%= Html.ActionLink("Search", "index", "news", new { id = "search" }) %> 

し、その後、別のjsファイルに:

ダーリンの <form>答え以上が、カミソリのマークアップを使用して
$(function() { 
    $('#search').click(function() { 
     var query = $('#query').val(); 
     // Here you could use AJAX instead of window.location if you wish 
     window.location = this.href + '?query=' + encodeURIComponent(query); 
     return false; 
    }); 
}); 
+0

感謝。フォームタグは私が探していたものですが、問題は既存のクエリパラメータを消去してしまうことです。このメソッドを使用すると、URLが/ News?favorites = Trueで、検索で送信され、例外がスローされ(bool paramがありません)、お気に入りが失われます。現在のパラメータを維持する方法はありますか? – NullReference

+0

'<%= Html.Hidden(" favorites ")%>'のように、 'favorites'パラメータを隠しタグとして含めることができます。 –

+0

恐ろしく、ありがとう!フォームタグに" />を追加しました。 – NullReference

0

:迅速な対応のための

@using (Html.BeginForm("index", "news", FormMethod.Get)) 
{ 
<label for="query">Search:</label> 
    @Html.TextBox("query") 
<input type="submit" value="Search" /> 
} 
関連する問題