2012-03-27 8 views
0

Ich möchte wissen, ob es möglich ist, auf die globalen Variablen einer Seite von einem Benutzersteuerelement zuzugreifen, das sich auf dieser Seite befindet..net - Zugriff auf globale Variablen einer Seite von einem Benutzersteuerelement

Dies ist nur ein Beispiel, meine tatsächlichen globalen Variablen sind komplexere benutzerdefinierte Konfigurationsobjekte, aber es sollte das gleiche sein.

Ich möchte auf die Variablen von einem Benutzersteuerelement zugreifen. Dies wäre hilfreich, da ich dieselben Objekte sowohl auf der Seite als auch auf dem Benutzersteuerelement verwenden müsste und nicht wirklich zweimal abrufen und speichern möchte.

Wer weiß, ob/wie dies zu tun ist? Vielen Dank!

+8

Da sind Bedienelemente gemeint gekapselt und wiederverwendbar zu sein, sollen Sie werden geben, was Daten, die sie in sie benötigen, nicht zu ziehen Daten aus ihrer Elternseite erwarten (n) . –

Antwort

2

Ja, Sie können. Es wird als Übergabe der Variablen an das Benutzersteuerelement bezeichnet. Sicher, es ist mehr als einmal im Speicher gespeichert, aber das ist ein bisschen der "Preis", eine Trennung von Bedenken zu halten und wiederverwendbare Kontrollen zu machen.

Wenn die Elemente Konstanten sind, können Sie sie als echte Globals speichern und über eine statische Methode in global.asax zugreifen. Wenn es auf Anfrage funktioniert, wird dies nicht auf einfache Weise funktionieren, aber Sie können es gestalten.

Nun, für Ihre nicht zweimal im Speicher speichern möchten Kommentar. Ich mache mir darüber keine Sorgen, da es sich um eine kleine Menge von Informationen handelt (1), zumal es nur für die Dauer der Anfrage (2) reicht. Nicht ganz richtig, da GC nicht sofort feuert.

2

Wenn Sie auf diese Informationen über mehrere Steuerelemente angewiesen sind, ist es am besten, eine UserControlBase zu haben, die von UserControl erbt und dann Ihre Steuerelemente von UserControlBase erben. Mach dasselbe mit den Page-Klassen. Dann können Sie die Eigenschaft zu Ihrer BasePage hinzufügen. Um in Ihrem UserControlBase Referenz nur tun ...

protected UserInfo UserInfo 
{ 
    get 
    { 
     return ((BasePage)this.Page).UserInfo; 
    } 
} 
Verwandte Themen