2011-09-14 5 views
0

私はbookオブジェクトとchapterオブジェクトを持つMVC3アプリケーションで作業しています。セッションを使用して、各ユーザーが選択した設定を覚えています。設定の例は最後に表示された章です。ユーザーが一度に1つのブラウザーしか開いていない場合には効果的です。マルチプルブラウザインスタンスがMVC3で開いているときに、どのようにユーザの設定を思い出すことができますか?

これは私の挑戦です:同時に複数のブラウザインスタンスを開くユーザーもいます。彼らは同じ資格情報を使用して各インスタンスにログインします。あるブラウザでは、最後に表示された章は、他のブラウザとは異なるはずです。現在、ユーザのセッション設定は、他のブラウザインスタンスのセッション設定を上書きします。どのような代替アプローチを使用すれば、ユーザーは複数のブラウザを開き、それぞれのブラウザの適切な設定を覚えておくことができますか?

答えて

1

これらをページの非表示フィールドに格納します。 MVCContrib Html.Serializeをチェックして、設定オブジェクトをページに書き込んで、投稿時に再水和します。次に、各ページオブジェクトを参照するだけです。ブラウザがセッションを共有している場合は、Cookieが必ずしも一意のインスタンスを保証するとは限りません。

+0

感謝のアダム、ページ上の非表示のフィールドを使用して動作します。この問題に直面している他の人にとっては、MVCContrib Html.Serializeの部分はオプションです。これはソリューションの重要な部分ではありません。 – Tarzan

+0

基本的な場合は、隠しフィールドが機能します。より複雑なオブジェクトであればHtml.Serializeはいいですし、モデルバインダーが隠しフィールドからも2番目のオブジェクトを作成するようにフォームを作成できますが、これにはプレフィックスが必要です。私はこの場合、Html.Serializeが少し楽になることがわかります:http://stackoverflow.com/questions/1079553/mvc-model-binding-with-multiple-entities-on-the-same-page –

関連する問題