Dynamiczna zmiana masterpage

0

Chciałbym mieć możliwość dynamicznego wyboru masterpage. Na stronie dodałem DropDownList, w nim dwa Itemsy Master1 i Master2. Zmieniając jego wartość ustawiam nowego pastermage za pomocą takiego kodu:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
    Session["Master"] = DropDownList1.SelectedValue;
    Response.Redirect("default.aspx");
}
protected override void OnPreInit(EventArgs e)
{
    base.OnPreInit(e);
    if (Session["Master"] != null)
        MasterPageFile = Session["Master"] + ".master";
}

jednak problem jaki napotykam to że po przeładowaniu strony i zmianie masterpage, wartość DropDownList ustawia się na początkową. Co za tym idzie nie mam możliwości powrotu do strony Master1. Czy ktoś mógłby doradzić co powinienem w tej sytuacji zrobić? Tak aby móc dowolnie dokonywać zmian masterpage.

0

musisz ustawic tez wartosc tego dropdowna na wartosc aktualnie zaladowanego masterpage
nie wiem gdzie on jest osadzony, ale pewnie na masterpage, wiec np. w OnLoad masterpage to zrob
DropDownList1.SelectedValue = Session["Master"];
oczywiscie obsluz to poprawnie kiedy w sesji nie ma tej wartosci

a w jakim celu chcesz zmianiac masterpage? bo jesli chcesz zmienic wyglad strony, to sa do tego inne mechanizmy, np. zmienia sie theme

0

Dzięki za odpowiedź. Otóż DropDownList umieściłem na stronce Default.aspx korzystającej z tych masterpage. Chciałbym w zależności od tego ustawienia zmieniać kolorystykę strony.

0
Mekintoszek napisał(a)

Chciałbym w zależności od tego ustawienia zmieniać kolorystykę strony.

Masterpagem? Mocny jesteś.

0

Ja bym się bardziej określił jako początkujący..

0

wiec jesli chodzi o kolorystyke nie dziwie sie zdziwieniu somekind'a :D
jak napisalem poczytaj o theme i skin
dzieki temu mozesz latwiej odseparowac wyglad od zachowania
i generalnie to co chcesz osiagnac powinienes za pomoca tych mechanizmow zrobic w asp .net

0

Tak zrobię, dzięki za podpowiedzi massther:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1