ASP.NET MVC - Is there a way to simulate a ViewSta

2019-01-17 17:47发布

I have the following situation... In a certain View, the user must select the initial hour, the final hour and the weekday. But, I can't save this informations to DB 'cause I need to save my whole page and I need the primary key of the primary table, but that's not the point.

So, while I don't save these data to DB, I'm saving to a Session. I was told to save to a cookie, but it appears that cookies have a size limit. So, I'm saving to a Session.

Buuuut, I was also told that I could save these informations (hours and weekday) to the user page, simulating a ASP.NET ViewState...

Does anyone know how to do this?? Does anyone know how to save temporarily these data withou using cookie or Session??

Thanks!!

4条回答
Emotional °昔
2楼-- · 2019-01-17 18:24

You could save a javascript array on the client... and then transmit all the information when the user ultimately saves.

You have to work a little more, but in the end it pays off.

I heavily use jQuery to do stuff like that, it's easier than it seems.

查看更多
做自己的国王
3楼-- · 2019-01-17 18:27

TempData["MyData"], mind you this will only last one round trip.

查看更多
老娘就宠你
4楼-- · 2019-01-17 18:34

If you just want to save the data for that request and the next request I'd recommend using Tempdata, else I'd recommend using Mehrdad`s answer.

查看更多
在下西门庆
5楼-- · 2019-01-17 18:38

Hidden input fields won't help?

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

Update (serializing an object to base64):

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

When you want to fetch it back:

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

Make sure you validate the data stored in the field when you use it as the client might change it. ViewState takes care of this automatically.

Side note: ASP.NET uses LosFormatter instead of BinaryFormatter to serialize ViewState as it's more efficient or ASCII based serialization. You might want to consider that too.

查看更多
登录 后发表回答