Asp.net

ASP.NET MVC - 有沒有辦法模擬 ViewState?

  • June 8, 2009

我有以下情況… 在某個View中,使用者必須選擇開始時間、結束時間和工作日。但是,我無法將這些資訊保存到數據庫,因為我需要保存整個頁面並且我需要主表的主鍵,但這不是重點。

所以,雖然我沒有將這些數據保存到數據庫中,但我正在保存到會話中。我被告知要保存到 cookie,但似乎 cookie 有大小限制。所以,我正在保存到一個會話。

Buuuut,我還被告知我可以將這些資訊(小時和工作日)保存到使用者頁面,模擬 ASP.NET ViewState…

有誰知道如何做到這一點??有誰知道如何在不使用 cookie 或 Session 的情況下臨時保存這些數據?

謝謝!!

隱藏的輸入欄位沒有幫助?

<%= 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 使用LosFormatter而不是BinaryFormatter序列化ViewState,因為它更有效或基於 ASCII 的序列化。您可能也想考慮這一點。

引用自:https://stackoverflow.com/questions/669492