DropDownList in Masterpage für Themes

Akarion

Grünschnabel
Hallo!

Ich bin C# und asp.net Neuling, habe bisher nur mit Delphi.w32 und PHP zu tun gehabt, möchte jetzt aber auf ersteres umsteigen.

Ich mache gerade meine Homepage. Ich habe eine MasterPage (MasterPage.master) in die ich meine Contentseiten hole (news.aspx, changelog.aspx). Ich habe im Design was in der MasterPage logischerweise hinterlegt ist eine Servercontrol DropDownList mit 2 Themes zur Auswahl platziert.

Mein Problem: wenn ich news.aspx aufrufe, habe ich ja keinen Zugriff auf die DropDownList die in der MasterPage hinterlegt ist. Wie löse ich das am besten, daß ich den ausgewählten Wert dauerhaft speicher (nicht das beim nächsten Menüklick das Standardtheme geladen wird) und den richtigen Eintrag natürlich auch immer selektiere?

Ich dachte an eine Session in der ich den Value speicher. Leider haben meine ersten Anlaufversuche nicht wirklich funktioniert. Das Theme muß ich in jeder Contentseite im PageInit Event ändern, wär natürlich wunderbar wenn ich in jeder Codedatei auf die DropDownList zugreifen könnte (ddlThemes.SelectedValue oder ddlThemes.Selected). Kann man diese vielleicht Public setzen? Glaube eher weniger, so bleibt eigentlich nur die Session.

Hat jemand vielleicht n paar Vorschläge? Außer Session["selectedTheme"] natürlich ^^ vielleicht etwas ausführlicher :D
 

derAlex

Mitglied
Hallo,

beim Umgang mit Masterpages stolpert man gerne über die Aufrufreihenfolge:
ContentPage -> MasterPage

Demnach ist ein zugriff auf MasterPage Controls im CodeBehind des Contents aus meiner Sicht nicht möglich. Die Session Möglichkeit scheint mir die richtige zu sein. Ist der Schlüssel, in dem Du die Auswahl in der Session gespeichert hast null, dann setzt Du einfach den initialen Wert...ansonsten wird im PageLoad der Wert aus der Session geladen.

Viele Grüße
Alex
 

Akarion

Grünschnabel
Ha! Ich habe die Lösung für mein Problem gefunden! Die Antwort kommt jetzt zwar ein bisschen zu spät - nur ich hatte n bisschen wenig Zeit für ASP im Moment.

Code:
DropDownList mydropdownlist = (DropDownList)this.Master.FindControl("mydropdownlist");

so kann ich die Werte auch außerhalb der Masterpage lesen :)