4

リクエスト間で TempData を使用せずに MVC Razor でデータを永続化するにはどうすればよいですか?

thisから TempData をいつ使用できるかはわかりますが、TempData はマシンに状態を作成するため、使用したくありません。

ありがとう、アニッシュ

編集:ユーザーが名前、年齢などのフィールドを並べ替えることができるビューページで、以前の並べ替え方向を保持したい.

修正: ViewBag を使用して修正しました。以前の並べ替えフィールド/方向は、ViewBag を使用して Controller から View に送信され、次のクリックでクエリ文字列として返されました。

良い修正: コントローラーで以前の並べ替えフィールドと以前の並べ替えディレクトリをチェックしてから設定するなど、.js ファイル内のすべてを処理しました。

これが私が最終的にやったことです。ViewBag を使用して以前の詳細を ViewPage に送信し、現在のユーザー アクションに基づいて .js で検証を行い、それをフォーム データでコントローラーに渡しました。

4

4 に答える 4

3

私は最近 ASP.NET MVC 3 をあまり行っていませんが、リクエスト間でデータを永続化できる唯一の現実的な方法は、セッション状態、Cookie、またはリクエストごとにサーバーにデータを送信することのいずれかだと思います。

ViewData、ViewBag、および TempData はすべて、各リクエストの最後で事実上強制終了されますが、セッション状態、Cookie、および投稿データは、クライアント ブラウザからの情報に基づいて、すべてのリクエストの開始時に使用可能になります。

データを保持しようとしている特定のシナリオは何ですか?

于 2012-04-17T21:57:14.837 に答える
3

クライアント ページで状態を維持することは、ステートレスな HTTP の概念を打ち破るものです。なぜ状態を維持したいのですか?コントローラーアクションから対応するビューにデータを渡すためのソリューションを探している場合は、ドロップダウンのデータを入力し、その ViewModel オブジェクトを厳密に型指定されたビューに送信する ViewModel を使用することをお勧めします。そこでデータを入手できます。また、データが必要な場合は、リクエストごとにDataLayerから(テーブル/またはキャッシュなどから)データを取得する必要があります。関連する ID をクエリ文字列に渡して、対応するデータを取得できます。

RTigger が述べたように、いくつかのデータをセッションに保存できます。これは、そのセッションの存続時間まで、すべてのページで利用できます。

于 2012-04-17T21:56:57.563 に答える
1

フォームを投稿する場合は、非表示の入力フィールドにパラメータを設定できます。ただし、HTTPGETでアクションを呼び出す場合は、QueryStringパラメーターを使用して値を渡すことができます。

于 2012-04-18T06:14:03.013 に答える
1

リダイレクト時に、これらの値をクエリ文字列パラメーターとして渡すことができます。

于 2012-04-18T06:07:40.923 に答える