おはようございます。顧客の検索結果を表示するビューがあります。ビューの上に、いくつかのチェックボックスを持つフィルターがあります。ユーザーは、複数のチェックボックス項目を選択して、フィルター結果ボタンを押すことができます。ユーザーがボタンを押すと、結果をフィルタリングするアクションが呼び出されます。ページも一新。私の質問は、どのチェックボックスがチェックされているかをページに記憶させるにはどうすればよいですか。結果が返されると、フィルター要素がリセットされるためです。前もって感謝します。
3 に答える
TempData を使用できます。 TempData VS ViewBag VS ViewData
ViewData を使用した場合、リダイレクト後、ViewBag および ViewData オブジェクトは使用できなくなります
TempData は、TempDataDictionary クラスから派生したディクショナリでもあり、短命セッションに格納され、文字列キーとオブジェクト値です。違いは、オブジェクトのライフサイクルです。TempData は、HTTP リクエストの時間の情報を保持します。これは、あるページから別のページへの移動のみを意味します。これは、同じ HTTP リクエスト内にあるため、302/303 リダイレクトでも機能します。あるコントローラーから別のコントローラーに移動するとき、またはあるアクションから別のアクションに移動するときに、データを維持するのに役立ちます。言い換えれば、リダイレクトするとき、「Tempdata」はそれらのリダイレクト間でデータを維持するのに役立ちます. 内部的にセッション変数を使用します。現在および後続のリクエスト中の一時データの使用は、次のリクエストが次のビューにリダイレクトされることが確実な場合にのみ使用されることを意味します。エラーを回避するために、複雑なデータ型の型キャストと null 値のチェックが必要です。通常、エラー メッセージや検証メッセージなどの 1 回限りのメッセージを保存するために使用されます。
TempData["CheckedList"] = YourCheckBoxListValues; //in your controller
あなたのビューで
@{
var tempchkboxList = TempData["CheckedList"] as yourStronglyTypeClass;
//or
var tempchkboxList = TempData["CheckedList"].ToString();
}
フォームを投稿するときに(検索ボタンをクリックして)、選択した/チェックしたチェックボックスの詳細をセッション変数に保持できます。HttpPostアクションで、チェックされたチェックボックスを読み取り、それをビューモデルのコレクションプロパティに追加して、ビューに送り返します。null
使い終わったら(読んだ後)、セッション変数の値をに設定します。ビューで、viewmodel値を使用して、これらのチェックボックスのチェック済みステータスを設定します。
別のオプションはajaxを使用することです。検索をクリックしたとき。検索条件を読み、アクションメソッドにajaxリクエストを送信します。部分ビューを返し、検索結果を表示するdiv/tableのみを更新します。
入力条件を記憶する期間によって異なります。を介してセッションに保存することもできますがSession["customerCriteria"] = yourCriteria
、コードを提供した方が簡単に例を挙げることができます。