Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC - Is there a way to simulate a ViewState?

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!!

like image 443
André Miranda Avatar asked Mar 21 '09 15:03

André Miranda


2 Answers

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.

like image 104
mmx Avatar answered Nov 01 '22 12:11

mmx


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

like image 3
Al Katawazi Avatar answered Nov 01 '22 10:11

Al Katawazi