Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Frage zu ViewState
AlfameisterT
myCSharp.de - Member



Dabei seit:
Beiträge: 154

Themenstarter:

Frage zu ViewState

beantworten | zitieren | melden

Hallo,

2 Usercontrols kommunizieren über ein Interface.
In Control2 habe ich eine Referenz von Control1. Da die Variablen den Wert nach jedem Zyklus verlieren wollte ich dieses in den Viewstate ablegen.

Das klappt natürlich nicht, da es ja keinen Konstruktor gibt.

Wie lößt man das am elegantesten ohne das ganze Control1 in den Viewstate zu legen?
private Nachricht | Beiträge des Benutzers
trinkjoghurt
myCSharp.de - Member

Avatar #avatar-1807.jpg


Dabei seit:
Beiträge: 178
Herkunft: Frankfurt / Main

beantworten | zitieren | melden

Moion,

beschreibe mal was Du mit "kommunizieren über ein Interface" meinst...
Möchtest Du werde von UC1 in UC2 haben?
Enjoy

Christian Arnold
private Nachricht | Beiträge des Benutzers
AlfameisterT
myCSharp.de - Member



Dabei seit:
Beiträge: 154

Themenstarter:

beantworten | zitieren | melden

Hauptsächlich greife ich auf Properties zu. Da waren zwar noch ein paar Listener, welche ich jetzt durch Events ersetzt habe.

Die Properties lagen auch im Viewstate. Da man auf den Viewstate anderer Komponenten nicht zugreifen kann, habe ich das Zeugs in die Session gelegt.

Jetzt übergebe ich strings der entsprechenden Session und hole mir da die Werte raus.
Wollte halt nicht alles doppelt und dreifach halten.

Diese zustandslose Webzeugs zerbricht mir noch den Kopf
private Nachricht | Beiträge des Benutzers
Cord Worthmann
myCSharp.de - Member



Dabei seit:
Beiträge: 1.207

beantworten | zitieren | melden

a)
Das ViewState-Objekt ist nicht als "Massenspeicher" gedacht, da sein Wert bei jeder Anforderung zum Client übertragen und nach jedem Postback von dort zurück geschickt wird. Durch die Encodierung ist der Wert ohnehin schnell sehr gross.
Im ViewState sollten nur Werte abgelegt werden, die der Wiederherstellung des Control-Zustands dienen, er ist jedoch nicht dafür ausgelegt, komplexe Objekte durch eine Anforderung zu schleifen.

b)
Nur Typen, welche das Interface ISerializable implementieren werden überhaupt im wert des ViewState gespeichert. 'Control' implementiert diese Schnittstelle nicht.


Schau Dir einmal den vom ViewState-Objekt generierten Wert im HTML-Output der Page an. Wenn man dazu übergeht, alles darin abzulegen, was einem einfällt, um eine scheinbar zustandsgesicherte Verbindung zu simulieren, nimmt er schnell mehr als die Hälfte der übertragenen Daten ein.
Ich würde Dir raten, lediglich die ID des referenzierten Controls im ViewState zu übertragen - mittels 'Page.Findcontrol' kannst Du dann Dein Control wiederfinden.


Grüsse
Cord
private Nachricht | Beiträge des Benutzers