Greifen Sie auf ViewState von der statischen Methode in aspx Seite zu

7

Angenommen, ich habe eine statische Methode und ich muss auf viewstate von dieser Methode zugreifen ... wie könnte ich das tun ... ich weiß, dass es nicht möglich ist, aber es muss einen Ausweg geben.

%Vor%     
Thomas 05.09.2011, 14:00
quelle

3 Antworten

13

Sie können den Verweis auf die Seite über HttpContext.CurrentHandler . Aber seit Control.ViewState ist geschützt Sie können nicht darauf zugreifen (ohne Reflektion zu verwenden), im Gegensatz zu Session , auf das über HttpContext.Current.Session zugegriffen werden kann.

Verwenden Sie also keine statische Methode, verwenden Sie Session oder verwenden Sie diesen Reflexionsansatz:

%Vor%

Dies funktioniert jedoch nicht, wenn Sie über WebService aufgerufen werden, da dies außerhalb von Page-Lifecycle .

    
Tim Schmelter 05.09.2011, 14:36
quelle
9

Sie können möglicherweise [WebMethod(EnableSession=true)] für Ihre PageMethod verwenden und Session anstelle von ViewState verwenden. Denken Sie daran, dass bei einer statischen PageMethod keine Instanz der Page-Klasse jemals erstellt wird, also sind nette Dinge wie ViewState einfach nicht da und es gibt keine Möglichkeit, sie dort zu machen.

    
Peter Bromberg 05.09.2011 17:40
quelle
1

Ich habe das versucht und für mich gearbeitet:

  • Erstellen Sie eine Klasse mit den Eigenschaften des viewState, auf den Sie zugreifen möchten
  • Übergeben Sie im Konstruktor den echten ViewState
  • Erstellen Sie eine statische Instanz der Klasse, initialisieren Sie sie jedoch nicht
  • In der PageLoad initialisiere Nicht statische Klasse und die statische Klasse
  • Greifen Sie über statische Klasseneigenschaften auf
  • zu

-

%Vor%     
Ders 31.05.2017 13:49
quelle

Tags und Links