20

asp.net mvc アプリケーションのさまざまなステップでオブジェクトを構築したいと思います。各ステップは異なるページです。簡単な Web.Forms アプリケーションの Session に保存するようなもの。

それについて読んで、Sessionは非常にasp.net MVCっぽいものではないようです。ただし、TempData と ViewData のどちらにも適合しないように見えるため、この状況に代わる他の方法を実際には考えられないため、間違っている可能性があります。

もちろん、4 つのステップを 1 ページにまとめて表示/非表示にすることもできますが、それは私の質問のポイントではありません。MVC の Session について、この種のマルチステップの問題に対する適切なアプローチであるか、または他の方法で行う傾向があるかについて、意見をお聞きしたいと思います。

これは、ASP.NET MVC のセッション変数の質問に非常によく似ていますが、セッションにアクセスする方法を探しているわけではありませんが、そのような問題を解決するための最良の方法であるか、Asp に欠けているより良い方法がある場合は.ネット MVC。

前もって感謝します

4

3 に答える 3

19

Session には非 MVC はありません。これは Web の重要な部分であり、ほとんどのサイトが何らかの形で使用しています。2 つの主なオプションがあります。オブジェクトをページ間でデータベースに保存する (つまり、不完全なオブジェクトを保存する) か、セッションに入れます。どちらにも長所と短所があります。

セッション中に部分的なオブジェクトをデータベースに保存する必要はありませんが、ユーザーが離れたりセッションがタイムアウトしたりすると、その情報がすべて失われます。また、ユーザーごとのメモリ フットプリントが大きくなる可能性があり、スケーリングを行うと他の問題が発生します。(これらはすべて、ロード バランサーまたは中央セッション ストアで sticky-session を使用して解決できます)。

データベースの方法は多くの点で優れていますが、通常は不完全なオブジェクトをデータベースに保存したくありません.1つの妥協点は、別のテーブルを作成し、そのテーブルにシリアル化されたオブジェクトを保存することです. 実際のテーブルを通過しないため、データベースの制約について妥協する必要はありません。(基本的に同じことをしているデータベースにセッションデータを保存することもできます)

最終的には、2 つの方法の判断が必要ですが、私は長年にわたって両方を使用してきました。

于 2009-04-17T16:23:38.630 に答える
2

TempData を使用してビュー間で渡すことができますが、後続のビューを介して渡す必要があります。後続のリクエストで消費されることを意図していますが、同じデータを一時データに戻す次のリクエストに一時データを渡すことができなかったわけではありません。

于 2009-04-17T16:30:31.127 に答える
1

試しました<%= Html.HiddenField(...) %>か?

于 2009-04-17T15:28:34.877 に答える