2011-01-20 10 views
3

カスタムページネーションメカニズムを構築しており、ページサイズを変更するためのドロップダウンがあります。ページサイズは私のビューモデルで表されます。明らかに、値を変更して再度検索を実行して適切な結果を得ることができます。HTML DropDownListForを返信するにはどうしたらいいですか?

しかし、選択した値が変更されたときにDropDownListForポストを戻す方法はありますか?

+1

のasp.net MVCは '離れてやってからPage.IsPostBack'を取得するために意図されました。単にヘルパー一体型ソリューションのasp.net mvc – hunter

答えて

7

私は実際にこの動作を起動するために少しジャバスクリプトを書いた:

$(document).ready(function() { 
    $('form').find('select.auto-post').change(function() { 
     $(this).parents('form').submit(); 
    }); 
}); 

おかしい偶然を、私は今、実際にworking on the same thingです。しかし、どのような種類のページングパラメータにもPOST HTTPメソッドを使用しないことをお勧めします。代わりにGETを使用してください。これにより、ユーザーにとってナビゲーションが容易になり、検索エンジンがコンテンツのすべてのページのインデックスを作成しやすくなります。

UPDATE:

上記のjQueryが機能するためには、あなたがこのようなあなたのドロップダウンリストをレンダリングします:!

Html.DropDownListFor(expression, items, new { @class = "auto-post" }) 
+0

何年も後に自分自身の質問をGoogleで検索しました。私が終了した解決策は、新しいデータを切り替えるためにGETを呼び出すことでした。本質的には、クエリ文字列にすべてを投げることによって提案していることです。おそらくViewModelを賢明に使用して達成されている可能性もあります – whoblitz

10

"onchange();"を渡すHtmlATtributesを使用できます。これを試して。

<%: Html.DropDownListFor(model => model.ProductName, listobj, 
           new { onchange = 'submit()'; }) %> 

希望します。

+4

+1でHttpPostを実行してください。ちょうど私が探していたもの。構文はMVCで二重引用符で、セミコロンを使わない方がうまくいきます: 'new {onchange =" submit() "}' –