ASP.NET MVC - Gibt es eine Möglichkeit, einen ViewState zu simulieren?

Ich habe die folgende Situation... In einer bestimmten Ansicht muss der Benutzer die Anfangsstunde, die letzte Stunde und den Wochentag auswählen. Aber, Ich kann diese Informationen nicht in DB speichern, weil ich meine ganze Seite speichern muss und ich den Primärschlüssel der Primärtabelle benötige, aber das ist nicht der Punkt.

Während ich diese Daten nicht in DB speichere, speichere ich in einer Sitzung. Mir wurde gesagt, dass ich in einem Cookie speichern soll, aber es scheint, dass Cookies eine Größenbeschränkung haben. Also, ich speichere in einer Sitzung.

Buuuut, mir wurde auch gesagt, dass ich diese Informationen (Stunden und Wochentag) auf der Benutzerseite speichern könnte, eine ASP.NET ViewState simulieren...

Weiß jemand, wie man das macht?? Weiß jemand, wie man diese Daten vorübergehend mit einem Cookie oder Einer Sitzung speichert?

Danke!!

Antwort auf "ASP.NET MVC - Gibt es eine Möglichkeit, einen ViewState zu simulieren? " 4 von antworten

Versteckte Eingabefelder helfen nicht weiter?

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

Update (Serialisieren eines Objekts auf base64):

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

Wenn Sie es zurückholen möchten:

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

Stellen Sie sicher, dass Sie die im Feld gespeicherten Daten überprüfen, wenn Sie es als Client verwenden. ViewState takes care of this automatically. kümmert sich automatisch darum.

Randbemerkung: ASP.NET verwendet LosFormatter instead of BinaryFormatter to serialize to serialize ViewState as it's more efficient or ASCII based serialization. You might want to consider that too. as it's more efficient or ASCII based serialization. You might want to consider that too. anstelle von BinaryFormatter to serialize , um ViewState as it's more efficient or ASCII based serialization. You might want to consider that too. zu serialisieren, da es effizienter oder ASCII-basierte Serialisierung ist. Vielleicht möchten Sie auch darüber nachdenken.

Sie können ein Javascript-Array auf dem Client speichern... und dann alle Informationen übertragen, wenn der Benutzer letztendlich speichert.

Man muss ein bisschen mehr arbeiten, aber am Ende zahlt es sich aus.

Ich benutze jQuery to do stuff like that, it's easier than it seems. stark, um so etwas zu tun, es ist einfacher, als es scheint.

Wenn Sie nur die Daten für diese Anforderung und die nächste Anforderung speichern möchten, die ich mit Tempdata empfehlen würde, würde ich empfehlen, Mehrdads Antwort zu verwenden.

TempData["MyData"], wohlgemerkt, das wird nur eine Hin- und Rückfahrt dauern.