Speichern einer List<int> in viewstate
Ich habe eine aspx-Seite, die die folgenden:
- Ein repeater mit einem linkbutton in jedem
- Die link-Taste hat eine commandargument der einen integer-Wert
- Ein user control
Die Idee ist, dass, wenn der Benutzer klickt auf den linkbutton, den Wert der commandarguement wird in einer Liste gespeichert. Kein problem, können Sie denken, aber ich brauche den Wert, gespeichert in einer Liste in der usercontrol, nicht in der ASPX-Seite. Die Liste muss beibehalten werden über postbacks, also muss Sie auch gespeichert werden, in der viewstate.
So habe ich eine öffentliche Eigenschaft in der Benutzer-Steuerelement-wie so:
public List<int> ImageString {
get {
if (this.ViewState["ImageString"] != null) {
return (List<int>)(this.ViewState["ImageString"]);
}
return new List<int>();
}
set { this.ViewState["ImageString"] = value; }
}
Und dann hoffte ich, dass aus meiner aspx-Seite, die ich hinzufügen könnte, eine code-Zeile hinzufügen, um einen Wert der Liste wie so:
this.LightBoxControl.ImageString.Add(value);
Das problem, das ich immer bin, ist, dass das der Wert ist eigentlich nie zu der Liste Hinzugefügt. Die Anzahl ist immer null.
Ich bin sicher, dass gerade ich habe die Eigenschaft falsch, aber ich bin mir nicht sicher, wie Sie Sie zu Recht..
Jegliche Hilfe würde sehr geschätzt werden.
Dank
Al
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein getter ist falsch. Dies ist die richtige Variante:
Hier überprüfen Sie zuerst, ob es etwas gibt, müssen Sie in ViewState schon, und wenn es nicht, fügen Sie es dort. Dann kehren Sie das Element aus ViewState - es ist garantiert da sein.
Ihre Lösung war schlecht, weil es nicht
new List<int>()
in den ViewState