ASP.NET oldal életciklus 2. rész – Az események

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

Előző írásomban egy ASP.NET oldal által végigjárt életciklus állapotokat mutattam be. Ebben a részben az egyes állapotokhoz tartozó eseményekről lesz szó, megmutatom milyen események következhetnek be az oldal egyes státuszaiban és hogy ezek használatával milyen hatásokat lehet elérni.
 

Az oldal minden egyes életciklus állapotában különböző eseményeket vált ki, amelyeket a fejlesztő kezelni tud, ezáltal pedig lehetősége van az eseményeken belül saját kódot létrehozni. Az egyes vezérlők eseményeihez eseménykezelő függvényeket lehet kötni akár deklaratívan, akár kódból. Az ASP.NET oldalak támogatják az automatikus esemény feliratkozást (automatic event wire-up), ami azt jelenti, hogy ha egye esmény kiváltódik, akkor az ASP.NET megvizsgálja a metódusok nevét és paramétereit és ha valamelyiket az esemény kezelésére megfelelőnek ítéli, akkor azt futtatja le az adott esemény eseménykezelőjeként. Ha a @Page direktíva AutoEventWireup attribútuma igazra van állítva, az oldal egyes eseményei automatikusan kötésre kerülnek a megfelelő eseménykezelő metódusokhoz, amelyek elnevezési konvenciója a Page_esemény formát követi. Az alábbiakban tehát a leggyakrabban használt oldal életciklus eseményeket mutatom be.

Események
 

PreInit: a start állapot befejeződése után, de még az inicializációs szakasz elkezdődése előtt váltódik ki. Az eseményre feliratkozni a következők miatt érdemes:
      – IsPostBackProperty értékének ellenőrzése miatt, hogy kiderüljön, vajon első alkalommal történik-e az oldal feldolgozása.
      – dinamikus vezérlők létrehozása
      – master page beállítása dinamikusan
      – Theme tulajdonság dinamikus beállítása
      – profile tulajdonság olvasása és beállítása
 

Init: az esemény kiváltódik, ha az összes vezérlő inicializálásra került, illetve minden skin beállítás elfogadásra került. Az egyes vezérlők Init eseménye megelőzi az oldal Init eseményét. Az egyes vezérlők tulajdonságainak olvasására és inicializálására használható.

InitComplete: az oldal inicializációs szakaszának végén váltódik ki. Tipikusan olyan műveletek végrehajtása esetén használjuk, amelyek megkövetelik azt, hogy minden inicializációs lépés befejezésre kerüljön.

PreLoad: az esemény még az előtt váltódik ki, hogy az oldal betölti a view state-t önmaga és minden vezérlője számára, majd ezután a postback adatok feldolgozása következik.

Load: a Page objektum meghívja az OnLoad metódust önmagán, majd megteszi ezt rekurzívan minden gyermek vezérlőre egészen addig, míg az oldal és a vezérlők teljesen betöltésre nem kerülnek. A vezérlők Load eseménye megelőzi az oldal Load eseményének kiváltódását.

Control események: akkor célszerű használni ezt az eseményt, ha kezelni szeretnénk az egyes vezérlők eseményeit, mint például egy Button Click eseménye.

LoadComplete: az eseménykezelő szakasz végén sül el. Olyan feladatok számára használjuk, amelyek megkövetelik, hogy maga az oldal, illetve a vezérlők is már be legyenek töltve. 

PreRender: azután váltódik ki, hogy a Page objektum létrehozza azon vezérlőket, amelyek szükségesek ahhoz, hogy az oldal renderelésre kerüljön. Az egyes vezérlők PreRender eseménye hamarabb váltódik ki, mint az oldal PreRender eseménye. Az esemény akkor használatos, ha el szeretnénk végezni az utolsó módosításokat az oldalon vagy akár a vezérlőkön.

PreRenderComplete: azután sül el, hogy azon vezérlők, amelyeknek beállításra került a DataSourceID property-je, meghívják a DataBind metódust.

SaveStateComplete: azután kerül kiváltódásra, hogy az oldal és a vezérlők control state-je és view state-je elmentésre került.

Render: ez igazából nem is egy esemény, hanem egy feldolgozási állapot. A Page objektum az összes vezérlőre meghívja. Minden ASP.NET vezérlő rendelkezik Render metódussal, amely előállítja a vezérlő kimenetét, amely végül elküldésre kerül majd a böngészőnek. 

Unload: kiváltódik minden vezérlőre, majd az oldalra is. A vezérlőkben akkor használjuk ezt az eseményt, ha el szeretnénk végezni az utolsó “tisztítási” munkálatokat, amilyen például egy vezérlő adatbázis kapcsolatának lezárása.  Az oldal szintén elvégzi a megfelelő “tisztítási” műveleteket, azaz lezárja a megnyitott fájl és adatbázis kapcsolatokat.

 

Ezzel véget ért az oldal életciklusához tartozó legfontosabb események ismertetése, remélem mindenki számára hasznos ismeretekkel szolgáltam.

Forráshttp://msdn.microsoft.com/en-us/library/ms178472.aspx

Stift András

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

HOZZÁSZÓLÁS

Ha nem hagy nyugodni az, amit a cikkben olvastál, akkor nyugodtan írd meg kérdésed vagy észrevételed kommentbe. Így szerzőnk könnyen tud neked válaszolni.

Vélemény, hozzászólás?