PlaceHolder a životní cyklus aplikace   otázka

C#, ASP.NET MVC

Dobrý den,

na stránku umisťuji do placeHolderu vlastní UserControly. Při refreshi stránky, o ně přijdu. Co mám udělat proto,aby se mě obnovovaly bez toho aniž bych je musel opětovně vytvářet?

  protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                MyUserControl uc =               (MyUserControl)Page.LoadControl("MyUserControl.ascx");
            PlaceHolderWizard.Controls.Add(uc);
            }           
        }

Děkuji za pomoc

David Plšek

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

Co máte na mysli formulací "při refreshi o ně přijdu"? Jak přijdete? Refresh neudělá v podstatě nic jiného,než že znovu vyvolá get na danou stránku...tedy provede se znovu Page_load a vám se vaše komponenta znovu vloží do placeholderu - tak jak to máte je to správně a funguje to

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

Nešťastně jsem to formuloval. Myslim tim, když uživatel klikne na ovládací prvek, který má nastavenou vlastnost AutoPostBack na true (např. tlačítko). Tak dojde znovu k načteni stránky, ale UserControly se do PlaceHolderu již nenačtou.

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

To je jasné,protože přidáváte kontroly jenom v případě,že se nejedná o postback...

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

Komponenty musíte vytvořit vždy znovu. Do ViewState se ukládají jen změny hodnot vlastností oproti defaultu, ale ne to, že v placeholderu je button. To by byl ViewState strašně velký.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

OK, budu data placeHolder vzdy znovu obnovovat. Ted me jeste zajima v jakem okamziku mam nacitat z UcserContrlou v placeholdru nacitat hodnoty, krere tam uzivatel zadal.

Pouzím k tomu tomu tohle, ale to nefunguje:

protected void Page_Init(object sender, EventArgs e)

{

if (!IsPostBack)

{

this.LoadComplete+=new EventHandler(_Default_LoadComplete);

}

}

protected void _Default_LoadCompletet(object sender, EventArgs e)

{

foreach (Control control in PlaceHolderWizard.Controls)

{

//udalost se vyvola, ale porad zde maji UserControly vychozi nastaveni :-(

}

}

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