Změna skinu   otázka

C#, ASP.NET WebForms

Narazil jsem při studiu asp.net na problém... V Master Page mám LinkButtony, které mi přepínají styly. Přepnou je však až po druhém kliknutí...

Každá stránka obsahuje tento kód:

protected void Page_PreInit (object sender, EventArgs e) {
  if (Session["currentTheme"] != null)
    Page.Theme = (string)Session["currentTheme"]; 
}

Všechny LinkButtony, které přepínají styly, volají tuto událost, kde CommandArgument je název stylu:

protected void lbtnSkin_Command (object sender, CommandEventArgs e) {
 Session["currentTheme"] = e.CommandArgument;
}

Prosím tedy o radu, v čem je problém.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

S tématy jsem si zatím ještě nehrál, ale z dotazu mě napadlo, jestli po prvním kliknutí nestačí jen obnovit okno.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Doporučil bych Vám v tomto případě použít Base Page a metodu PreInit řešit tam,abyste nemusel psát kód do každé stránky - dle mého by nejlepší řešení bylo,ještě kontrolovat která komponenta provedla Postback,ať se session nekontroluji stále.Ještě bych doporučil ošetřit událost v metodě PreInit a to,pokud nebude session obsahovat žádný styl,tak nadefinovat nějaký defaultní.

Např.:

Default.aspx.cs

 public partial class Default : BasePage
   {
      protected void Page_Load(object sender, EventArgs e)
      {         
      }
   }

BasePage.cs

public class BasePage : System.Web.UI.Page

protected override void OnPreInit(EventArgs e)
    {
        base.OnPreInit(e);    
        if (Session["currentTheme"] == null)
        {
            Session.Add("currentTheme", "Default");
            Page.Theme = ((string)Session["currentTheme"]);
        }
        else
        {
            Page.Theme = ((string)Session["currentTheme"]);
        }
    }

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback