2011-12-29 11 views
2

私は、ページリクエストの間にモデルを保存するためにTempDataを使用していました。そうしないと、必要なモデルのクラスの特定のプロパティにアクセスできなくなります。TempDataに複数の同時ユーザーに安全な値を格納していますか?

(基本的には.nameと.activeプロパティを持つオブジェクトのリストがあります。私はCheckBoxForの.activeプロパティを持ち、それは保存されていますが、.nameプロパティフォームが送信されるときにnullに設定されているので、そのプロパティにもアクセスする必要があります。したがって、古いモデルをTempDataに格納して、必要なときにそのプロパティをコピーしています。

ユーザーがチェックボックスをオンにしてフォームを送信すると、モデルがTempDataに保存されます。ユーザーがボタンをクリックすると、後でTempDataから読み込まれます。 (介入要求はありません)

TempDataは、複数のユーザーに安全な方法で使用していますか?つまり、各クライアントは独自のTempDataのコピーを取得しますか?提出、TempDataをに

  • ユーザー1回のクリックボタンを彼女のモデルを保存し、TempDataを
  • ユーザー2回のクリックのチェックボックスに彼のモデルを保存し、

    1. ユーザー1回クリックするチェックボックス:私は、おおよそ以下のような状況が心配ですフォームとテンポデータからモデルを読む

    私が確信しているのは、どのモデルがユーザー1になるかです。誰かが私を励ましてくれますか?

  • +0

    JavaScript変数にデータを格納するオプションがありますか?これにより、ページ要求の間に状態が維持され、同時のユーザー衝突がなくなります。 –

    +0

    簡単にはありません。これはオブジェクトのリストで、それぞれが名前(必要なもの)と子オブジェクトのリストを持っています。子オブジェクトのそれぞれには(必要な)タグと.activeプロパティがあり、親オブジェクトと子オブジェクトの数はさまざまです。コントローラーは常にこのすべてについて知っておく必要があります(それぞれのアクティブな状態を名前とタグのペアに関連付けることができなければなりません)。ビューはそれを表示する必要があります。 – sapi

    +0

    OK、助けたいだけなのでここに足を運んでください:これは本当にクライアント上のJSオブジェクトに格納できるもののように聞こえます。リクエスト中に直接データを操作する必要がない場合は、JsonFXのようなものを使用してモデルをシリアライズし、ビューに渡してから、クライアントに保存してさらに操作を待つようにします。私はいくつかのアプリでこれをやっているし、うまくいきます。私が懸念している唯一の挑戦*(ブロッカーではない)のSEO。これが理にかなっていることを望みます - ただ助けようとしています;)。 –

    答えて

    7

    TempDataはセッションにバインドされています。ユーザー1はTempDataのみを表示します。

    +0

    ありがとう:)モデル状態を維持するために、MVCにもっと論理的な方法がありますか?私は、ビューが、何かに明示的に束縛されていないすべてのプロパティを投げ捨てるのではなく、作成されたモデルのインスタンスを操作するだけではない理由を理解できませんでした。 – sapi

    +0

    HTTPの性質。ビューとコントローラーは、1つのHTTP要求と応答を表します。 –

    関連する問題