Asp.net
ASP.NET MVC - 有沒有辦法模擬 ViewState?
我有以下情況… 在某個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 的序列化。您可能也想考慮這一點。