我有以下情况......在某个视图中,用户必须选择初始小时,最后一小时和工作日。但是,我无法将此信息保存到DB中,因为我需要保存整个页面,我需要主表的主键,但这不是重点。
所以,虽然我没有将这些数据保存到DB,但我正在保存到Session。我被告知保存到cookie,但似乎cookie有大小限制。所以,我要保存到会话中。
Buuuut,我还被告知我可以将这些信息(小时和工作日)保存到用户页面,模拟ASP.NET ViewState ......
有谁知道怎么做?有谁知道如何使用cookie或Session ??暂时保存这些数据
谢谢!
答案 0 :(得分: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使用LosFormatter
代替BinaryFormatter
来序列化ViewState
,因为它更有效或基于ASCII的序列化。您可能也想考虑这一点。
答案 1 :(得分:3)
TempData [“MyData”],请注意,这只会持续往返一次。
答案 2 :(得分:0)
答案 3 :(得分:0)
如果您只想保存该请求的数据以及我建议使用Tempdata的下一个请求,否则我建议您使用Mehrdad的答案。