HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Az ASP.NET lapobjektum modell


ASP.NET modell 2. rész


Az elmúlt héten megismerkedhettünk az ASP.NET lapobjektum szerkezetével. A cikkből akkor kimaradt az ASP.NET lapobjektum-futtatás szakaszainak elemzése. Ebben a cikkben most a futtatás minden fázisát nyomon követhetjük lépésről-lépésre.

A futtatás szakaszai
Az első szakasz a lap életciklusában az inicializálás. Ez a szakasz az Init eseménnyel jellemezhető, amely beindítja az alkalmazást, miután az oldalvezérlő fa tökéletesen elkészült. Más szavakkal, amikor az Init esemény megérkezett, akkor valamennyi statikusan deklarált vezérlő az .aspx forrásfájlban már létrejött és az alapértelmezett értékét őrzi. A vezérlők képesek bekapcsolni az Init eseményt, hogy bármely beállítást inicializáljanak, amely szükséges lesz a bejövő Web-kérés életideje alatt. Például ekkor a vezérlők képesek betölteni a külső mintafájlokat, vagy beállítani a kezelőket az eseményekhez. Nézet-státuszú információ még nem elérhető.
A lap keretrendszere az inicializálás után azonnal betölti a nézet-státuszt a laphoz. A nézet-státusz egy név/érték páros gyűjtemény, ahol a vezérlők és a lap önmaga tárol minden olyan információt, amelynek a Web-kérés folyamán élőnek kell lennie. A nézet-státusz képviseli a lap hívási környezetét. Általában a lap által a szerveren utoljára feldolgozott vezérlők státuszát tartalmazza. A nézet-státusz üres, amikor az aktuális viszonyban a lapot először tekintjük meg. Alapértelmezésben a nézet-státusz a laphoz adott rejtett mezőben tárolódik. Ennek a mezőnek a neve: __VIEWSTATE. Felülbírálva a LoadViewState metódust – egy védett megelőző metódus a Control osztályon – a komponensfejlesztők vezérelni tudják, hogy a nézet-státusz miként álljon helyre, és a tartalma miként feleljen meg a belső státusznak.
Metódusok, mint a LoadPageStateFromPersistenceMedium és az ellenpéldánya a SavePageStateToPersistenceMedium, arra használhatók, hogy betöltsék és elmentsék a nézet státuszt egy alternatív tárolóhelyre – például Session-be, adatbázisba, vagy egy szerveroldali fájlba. A LoadViewState-től eltérően a fent említett metódusok a Page-ből származtatott osztályokból érhetők csak el.
Amint a nézet-státusz visszaállításra kerül, a lap favezérlői ugyanabban a státuszban vannak, mint az utolsó pillanatban, amikor a lap a böngésző számára lefordított. A következő lépés a státuszok frissítése a kliens-oldali változások egyesítésével. A postback adatfeldolgozási fázis a vezérlőknek egy lehetőséget nyújt státuszaik frissítésére, így precízen válaszol a megfelelő HTML elem státuszára a kliensnél. Például, egy szerver TextBox vezérlőnek a saját HTML mása az <input type=text> elem. A postback adatfázisban, a TextBox vezérlő megkapja az <input> tag aktuális értékét és a belső státuszának frissítésére használja. Minden vezérlő felelős az átküldött adatokból származó kivonatos értékekért, és némely tulajdonságainak frissítéséért. A TextBox vezérlő frissíteni fogja a Text tulajdonságot, minthogy a CheckBox vezérlő is frissíteni fogja a Checked tulajdonságát. A szervervezérlő és egy HTML elem közötti megfeleltetés megtalálható mindkettejük ID-jében.
A postback adatfeldolgozó szakasz végén, a lapon valamennyi vezérlő visszatükrözi a megelőző frissített státuszt, a kliens által megadott változásokkal. Ezen a ponton a Load esemény indul a lapon.
Lenniük kell vezérlőknek a lapon, amelyeknek szükséges, hogy végrehajtsanak bizonyos feladatokat, ha egy érzékeny tulajdonság változott két különálló kérés között. Például, ha a szöveg a textbox vezérlőben módosult a kliensen, a vezérlő elindítja a TextChanged eseményt. Valamennyi vezérlőnek döntenie kell, hogy indítson-e megfelelő eseményeket, ha egy vagy több tulajdonsága megváltozott a kliens felöl érkezett értékekkel. A vezérlők, amelyekhez ezeket a változásokat kritikusan megvalósítja az IPostBackDataHandler felület LoadPostData metódusa, azonnal meghívásra kerülnek a Load esemény után. A LoadPostData metódust kódolva egy vezérlő ellenőrzi, hogy történt-e azóta bármilyen kritikus változás, hogy az utolsó kérés érkezett, és elindítja a saját change eseményét.
Kulcsfontosságú esemény egy lap életciklusában, amikor futtatásra kerül a szerver-oldali kód a kliens által vezérelt eseménnyel kapcsolatban. Amikor a felhasználó egy gombra kattint, a lap visszaküldi. Az elküldött értékek készlete tartalmazza a műveletet kezdeményező nyomógomb azonosítóját. Ha a vezérlő végre tudja hajtani az IPostBackEventHandler interfészt (nyomógombok és link nyomógombok ezt teszik), akkor a lap keretrendszere meghívja a RaisePostBackEvent metódust. Hogy mit tesz ez a metódus, az a vezérlő típusától függ. Ameddig a nyomógombok és a link nyomógombok érintettek, a metódus keres egy Click eseménykezelőt és futtatja a társított meghatalmazottat.
A postback esemény kezelése után az oldal felkészül a fordításra. Ez a szakasz a PreRender eseménnyel jelölt. Ez egy jó időpont a vezérlőknek, hogy elvégezzék az utolsó frissítési műveleteket, amelyek szükségesek azelőtt, hogy a nézet státuszmentésre kerülne, és a kimenet lefordítódna. A következő szakasz a SaveViewState, amelyben minden vezérlő és maga az oldal felszólításra kerül, hogy kiírja a saját ViewState készletének tartalmát. Az eredő nézet-státusz feldarabolódik, Base64 kódolást kap, és csatlakozik a __VIEWSTATE rejtett mezőhöz.
Az egyedi vezérlők fordítási mechanizmusa módosulhat, a Render metódus által felülbírálva. A metódus vesz egy HTML író objektumot, és arra használja, hogy összegyűjtse az összes HTML szöveget, amely a vezérlőhöz jött létre. Az alapértelmezett megvalósítása a Page osztály Render metódusának egy rekurzív hívásból áll valamennyi összetevő vezérlőhöz. Valamennyi vezérlőre az oldal meghívja a Render metódust és gyorsítótárazza a HTML kimenetet.
A végső jele egy lap életének az Unload esemény, mely a page objektum elhagyása előtt érkezik. Ebben az eseményben felszabadíthatunk kritikus erőforrásokat (pl.: fájlokat, grafikus objektumokat, adatbázis kapcsolatokat).
Végül, ez után az esemény után a böngésző megkapja a HTTP válasz csomagot és megjeleníti az oldalt.

Cikksorozat

#IDKategóriaCikk címeSorozat
4397Windows.NET Framework konfigurálása az operációs rendszerben1. rész
4446Windows.NET Framework konfigurációs snap-in2. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2003 évkönyv 654. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |