9

次の状況があります... 特定のビューで、ユーザーは最初の時間、最後の時間、および曜日を選択する必要があります。しかし、ページ全体を保存する必要があり、主テーブルの主キーが必要なため、この情報を DB に保存することはできませんが、それは重要ではありません。

したがって、これらのデータを DB に保存するのではなく、セッションに保存しています。Cookie に保存するように言われましたが、Cookie にはサイズ制限があるようです。だから、私はセッションに保存しています。

また、ASP.NET ViewState をシミュレートして、これらの情報 (時間と曜日) をユーザー ページに保存できるとも言われました...

誰もこれを行う方法を知っていますか?? Cookieやセッションを使用せずにこれらのデータを一時的に保存する方法を知っている人はいますか??

ありがとう!!

4

4 に答える 4

20

非表示の入力フィールドは役に立ちませんか?

<%= Html.Hidden(...) %>

更新 (base64 へのオブジェクトのシリアル化):

var formatter = new BinaryFormatter();
var stream = new MemoryStream();
formatter.Serialize(stream, myObject); // myObject should be serializable.
string result = Convert.ToBase64String(stream.ToArray());

取得したい場合:

var formatter = new BinaryFormatter();
var stream = new MemoryStream(Convert.FromBase64String(hiddenFieldValue));
var myObject = (MyObjectType)formatter.Deserialize(stream);

クライアントがデータを変更する可能性があるため、フィールドを使用するときは、フィールドに保存されているデータを検証してください。ViewStateこれは自動的に処理されます。

補足: ASP.NET では、より効率的または ASCII ベースのシリアル化であるため、シリアル化のLosFormatter代わりに使用されます。あなたもそれを検討したいかもしれません。BinaryFormatterViewState

于 2009-03-21T15:48:30.220 に答える
3

TempData ["MyData"]、これは往復で1回だけ続くことに注意してください。

于 2009-03-21T23:56:26.710 に答える
0

そのリクエストと次のリクエストのデータを保存するだけの場合は、Tempdata を使用することをお勧めします。それ以外の場合は、Mehrdad の回答を使用することをお勧めします。

于 2009-03-21T16:15:23.463 に答える
0

クライアントに JavaScript 配列を保存し、ユーザーが最終的に保存するときにすべての情報を送信できます。

もう少し頑張る必要がありますが、最終的には報われます。

私はそのようなことをするためにjQueryを多用していますが、思ったより簡単です。

于 2009-03-21T15:59:31.910 に答える