2009-04-28 3 views
0

Ok, meine Masterpage hat ein Dropdown-Menü, das die Größe steuert, die viele Dinge betrifft. Ich muss auf den Dropdown-Index von Inhaltsseiten zugreifen, also mache ich es mit diesem Code.Masterpage Dropdown-Liste nicht ausgewählter Index

Ich benutze Ajax und wenn die Größe ändert das Menü auf der Masterpage ändert sich gut.

Aber wenn ich auf das aktualisierte Menü klicke, verwendet es den Zero-Index der Dropdown-Liste auf meiner Inhaltsseite, sogar visuell zeigt es die Größe, die ich ausgewählt habe.

int size = Convert.ToInt32(Master.MySize.SelectedItem.Text); //Uses 0 index :(

Ich möchte nicht Sitzung verwenden, ich verstehe einfach nicht, warum das nicht 100% der Zeit funktioniert. Hat jemand Ideen?

+0

funktioniert es jedes Mal, wenn Sie ajax ausgeschaltet haben? –

Antwort

0

Ich habe es herausgefunden!

stellte ich die Dropdown-Liste ein öffentliches statisches Objekt

public static DropDownList MySize; 

Dann ist es Ich habe gerade gleich die Seite Instanz jedes Mal, wenn die Masterpage geladen.

protected void Page_Load(object sender, EventArgs e) 
{ 
    MySize = _ddlSize; 
} 

Aufruf der DropDownList ist ein wenig anders, da es ein statisches Objekt ist.

MasterPage.MySize.SelectedItem.Text 

Aber es funktioniert auf allen Inhaltsseiten, die von der Masterpage abgeleitet werden.

+0

Es statisch zu machen funktioniert nur, wenn Sie möchten, dass es für immer und ewig für alle Ihre Benutzer lebt. Statische Objekte leben in dem Arbeitsprozess, in dem Ihre App ausgeführt wird. Dies bedeutet, dass sie global verfügbar ist, auch über Benutzersitzungen hinweg, bis der Arbeitsprozess beendet oder neu gestartet wird. aber nicht immer). –

+0

Ich habe diese Methode über mehrere Benutzer getestet und es funktioniert gut. Es wirft eine gute Frage auf, wie kann ich global statische Variablen erstellen, die über mehrere Sitzungen hinweg leben, weil dies nicht der richtige Weg ist. –

0

haben überprüfen Sie diese Lösung in einem Multi-User-Szenario, da der Wert statisch ist es für verschiedene Benutzer

der Ansicht Zustand versetzt, in der Masterseite reflektiert werden soll, die Drop-Down-Listen Wert behalten oder versuchen, Verwenden Sie versteckte Steuerelemente, um den Wert zu halten

+0

Sie bringen einen sehr guten Punkt. Ich habe den Browser geschlossen und ihn erneut geöffnet und die Werte werden nicht beibehalten. Ich denke, es funktioniert, aber jetzt bin ich ein wenig paranoid. Danke, dass du darauf hingewiesen hast. –