Bevezet´es Alapok Szerver-oldali vez´erl˝ ok (kontrolok) ASP.NET oldal ´eletciklusa, esem´enymodell
2 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
´ Attekint´ es
Bevezet´es Alapok Szerver-oldali vez´erl˝ ok (kontrolok) ASP.NET oldal ´eletciklusa, esem´enymodell
3 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
´ Attekint´ es
Bevezet´es Alapok Szerver-oldali vez´erl˝ ok (kontrolok) ASP.NET oldal ´eletciklusa, esem´enymodell
4 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
´ Attekint´ es
Bevezet´es Alapok Szerver-oldali vez´erl˝ ok (kontrolok) ASP.NET oldal ´eletciklusa, esem´enymodell
5 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
ASP vs. ASP.NET ASP - Active Server Pages a Microsoft ´altal kifejlesztett szerver-oldali script nyelv a “klasszikus” ASP (utols´ o verzi´ oja ASP 3.0) egy ASP ´allom´any ´ertelmezett, kiterjeszt´ese: .asp ASP.NET az ASP.NET a klasszikus ASP tov´abbfejlesztett v´altozata, de NEM (teljesen) kompatibilis vele A Microsoft .NET platformj´anak r´esze web alkalmaz´asok k´esz´ıt´es´et lehet˝ ov´e tev˝ o keretrendszer egy ASP.NET ´allom´any leford´ıtott, kiterjeszt´ese: .aspx Mindkett˝ o az IIS (Internet Information Services) szerveren fut 6 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
ASP.NET el˝ony¨ok (ASP-hez k´epest)
T¨ obb programoz´asi nyelvet t´amogat Programozhat´ o kontrolok Esem´enyvez´erelt programoz´as XML alap´ u komponensek Felhaszn´al´ o azonos´ıt´as (felhaszn´al´ oi fi´ okok, szerepek) Jobb sk´al´azhat´ os´ag Hat´ekonys´ag (leford´ıtott k´ od) Egyszer˝ ubb konfigur´al´as ´es telep´ıt´es
7 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
Fejleszt´esi-/futtat´asi k¨ornyezet IIS szerver (Add/Remove Windows components) .NET keretrendszer .NET fejleszt˝ oi k¨ ornyezet (Visual Studio... –kereskedelmi vagy ingyenes verzi´ o–, Visual Web Developer (integr´alt szerver: ASP.NET Developement Server), WebMatrix) hivatalos weboldal: http://www.asp.net dokument´aci´ o: Dokument´aci´ o a Microsoft oldal´an Tutorialok
8 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
Webalkalmaz´as k´esz´ıt´es´et illet˝ oen az al´abbi h´aromf´ele megk¨ozel´ıt´est t´amogatja: Web Pages – gyors ´es egyszer˝ u m´ odja annak, hogy a szerver oldali k´ odot a HTML elemekkel vegy´ıtve dinamikus tartalmat hozzunk l´etre Web Forms – esem´enyvez´erelt weboldal-k´esz´ıt´es ASP.NET MVC – komplexebb webalkalmaz´asok fejleszt´es´ere alkalmas keretrendszer, mely k¨ ul¨ onb¨ oz˝ o tervez´esi mint´ak betart´as´ara oszt¨ ¨ on¨ oz
9 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
ASP.NET oldalak jellemz˝oi Az ASP.NET oldalak (.aspx ´allom´any) dinamikus tartalom l´etrehoz´as´at teszik lehet˝ ov´e ASP.NET web oldal feldolgoz´as´anak l´ep´esei: oldal (els˝ o) lek´er´ese (GET met´ odus): az oldal el˝ osz¨or fut a szerveren a dinamikusan gener´alt tartalom vissza lesz k¨ uldve ´es megjelenik a kliens b¨ ong´esz˝ oj´eben a felhaszn´al´ o pl. inform´aci´ ot ´ır be/kiv´alaszt vmilyen opci´okat. . . , majd megnyom egy gombot (ha egy m´asik oldalra mutat´o hivatkoz´asra kattint - az oldal feldolgoz´asa ezzel v´eget ´er) a form-adatok a szerverre lesznek “visszapost´azva” (postback), POST met´ odussal -tipikusan- ugyanahhoz az oldalhoz a szerveren ism´et ugyanaz az ASP.NET oldal fut le – a k¨ uld¨ott inform´aci´ o hozz´af´erhet˝ o szerver oldalon a szerveren t¨ ort´ent feldolgoz´ast k¨ ovet˝ oen a gener´alt tartalom visszamegy ´es meg lesz jelen´ıtve (rendering ) a b¨ ong´esz˝oben 10 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
ASP.NET web oldalak jellemz˝oi (folyt.)
Ez a ciklus ism´etl˝ odik mindaddig, am´ıg a felhaszn´al´o az adott oldallal dolgozik. Egy ilyen ciklus neve: Round trip (“k¨ orutaz´as”) Lehet˝ os´eg van arra is, hogy a k´er´es param´etereket egy m´asik oldallal dolgoztassuk fel (cross-page posting ) oldal ´elettartama Minden egyes k´er´es egy u ´jabb oldal (egy´ uttal egy u ´j Page instancia) l´etrehoz´as´at eredm´enyezi (a cache-el´est˝ ol eltekintve)
11 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
ASP.NET oldal fel´ep´ıt´ese: A felhaszn´al´ oi interf´esz tervez´es´ere az ASP.NET k´etf´ele modellt k´ın´al: Single-File Page Model – vizu´alis elemek, illetve esm´enykezel˝ok vagy egy´eb k´ od ugyanazon .aspx ´allom´anyban Code-Behind Page Model – k¨ ul¨ onv´alasztja a vizu´alis elemeket, ´es az ezeket kezel˝ o logik´at Egy ASP.NET oldal az al´abbiakat tartalmazhatja: statikus HTML/XHTML ASP.NET direkt´ıv´ak (pl. < %@ Page . . . % >) egyetlen form elem (ha vannak szerver kontrolok) ASP.NET szerver-oldali vez´erl˝ ok (server controls) szerver oldali megjegyz´es < % – – megjegyzes – – % > a Single-File Page Model haszn´alata eset´en: script blokk – script elembe (runat = ‘‘server’’ attrib´ utummal) ´agyazott k´ od – alprogram megad´asa, pl. esem´enykezel˝o 12 / 33
ASP.NET alapok - Code-Behind Page Model k´et r´eszre osztott felhaszn´al´ oi interf´esz (Code-Behind Page Model): vizu´alis elemek: ASP.NET dokumentum (markup file) logika: hozz´a tartoz´ o “h´att´erk´ od” (code-behinde file) – C#, VB.NET, stb. az ASP.NET dokumentum a haszn´alt .NET programoz´asi nyelvnek megfelel˝ o oszt´ally´a lesz ford´ıtva (a h´att´erk´ oddal egy¨ utt) a leford´ıtott k´ od egy ¨ ossze´all´ıt´asban (assembly) szerepel, mely a szerverre telep´ıtve futtathat´ o Az ASP.NET dokumentumb´ ol gener´alt oszt´aly (document class) a System.Web.UI.Page oszt´aly lesz´armazottja (l´asd diagram →) a Page oszt´alyt´ ol ¨ or¨ ok¨ olt fontosabb adattagok: Request, Response objektumok (l´ asd m´eg: bels˝ o objektumok) az oldalon tal´ alhat´ o HTML-, illetve webkontroloknak megfelel˝ o HTMLControls, WebControls oszt´ alyok IsPostBack tulajdons´ ag 14 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
¨ okl˝od´esi modell Or¨ Single Page Model:
Code Behind Model:
15 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
ASP.NET dokumentum h´att´erk´odj´anak megad´asa ASP.NET web oldal projekt eset´en: <%@ Page Language="..." CodeFile="allomanynev.aspx.cs" Inherits="allomanynev" %> telep´ıthetj¨ uk a web oldal forr´ask´ odj´at a szerverre – ezek automatikusan le lesznek ford´ıtva az els˝ o (b´armelyik oldalra vonatkoz´ o) k´er´es ´erkez´esekor nem k¨ otelez˝ o, de v´egezhet˝ o el˝ oford´ıt´as is (hogy a legels˝o hozz´af´er´es se legyen lass´ u) ASP.NET web alkalmaz´ as projekt eset´en: <%@ Page Language="..." CodeBehind="allomanynev.aspx.cs" Inherits="allomanynev" %> a web oldalakat explicit m´ odon le kell ford´ıtani telep´ıt´es el˝ott (´ıgy tesztelhet˝ o is telep´ıt´es el˝ ott) egy vagy t¨ obb ¨ ossze´all´ıt´ast (assembly-t) telep´ıthet¨ unk. 16 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
Direkt´ıv´ak A direkt´ıv´ak az oldal feldolgoz´as´ara vonatkoz´ o inform´aci´ot szolg´altatnak (nem lesznek megjelen´ıtve) a @ Page direkt´ıva seg´ıts´eg´evel megadhat´ o: a programoz´asi nyelv, melyen az oldalhoz tartoz´ o k´od ´ır´odott a h´att´erk´ od el´erhet˝ os´ege (Code-Behind Page Model eset´en) debug opci´ ok van-e az oldalhoz rendelt u ´n mester-oldal (Master Page) m´as direkt´ıv´ak: @ Import – haszn´alni k´ıv´ant n´evterek import´al´asa @ OutputCache – oldal cache-el´es´ere vonatkoz´ o inform´aci´ok @ Implements – valamilyen .NET interf´esz implement´al´asa eset´en @ Register – u ´jabb vez´erl˝ ok (pl. felhaszn´al´ o ´altal defini´alt vez´erl˝ok) regisztr´al´asa az oldalon val´ o haszn´alat ´erdek´eben 17 / 33
ASP.NET szerver-oldali kontrolok/vez´erl˝ok Az ASP.NET az al´abbi kateg´ ori´akba sorolt vez´erl˝ oket k´ın´alja fel: HTML kontrolok (HTML controls) – szerver-oldalon programozhat´ ov´a tett (X)HTML elemek web kontrolok (web controls) – a HTML vez´erl˝ okn´el komplexebb funkcionalit´as´ u kontrolok valid´ aci´ os/´ erv´ enyess´ eg-vizsg´ al´ o kontrolok (validation controls) – lehet˝ ov´e teszik k¨ ul¨ onb¨ oz˝ o form-elemekbe bevitt ´ert´ekek megadott krit´eriumok szerinti ellen˝ orz´es´et felhaszn´ al´ oi vez´ erl˝ ok (user controls) – a felhaszn´al´o ´altal k´esz´ıtett, u ´jrafelhaszn´alhat´ o elemek k´esz´ıt´es´et teszik lehet˝ ov´e Az ASP.NET oldalon szerepl˝ o vez´erl˝ ok az oldalnak megfelel˝o oszt´alyon bel¨ ul egy fastrukt´ ur´aban helyezkednek el.
19 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
HTML szerver-oldali vez´erl˝ok az egyszer˝ u (X)HTML elemeket az ASP.NET egyszer˝ u sz¨ovegk´ent kezeli b´armelyik HTML elem szerver oldalon hozz´af´erhet˝ov´e/ programozhat´ ov´a tehet˝ o a runat = "server" attrib´ utum hozz´aad´as´aval a HTML vez´erl˝ ok a megfelel˝ o (X)HTML elemhez hasonl´o m´odon lesznek megjelen´ıtve az id attrib´ utumban megadott n´even ´erhet˝ o el a megfelel˝o objektum a HTML vez´erl˝ o minden egyes attrib´ utuma el´erhet˝o a szerver-oldali objektum tulajdons´agak´ent pl. HTMLControlsPl.aspx HTML vez´erl˝ ok – Referencia 20 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
Web kontrolok nem felt´etlen¨ ul feleltethet˝ oek meg egy az egyben egy (X)HTML elemnek komplexebb funkcionalit´ast biztos´ıtanak a HTML vez´erl˝okh¨oz k´epest a megjelen´ıt´es¨ uk f¨ ugghet a b¨ ong´esz˝ o t´ıpus´at´ ol vagy a tulajdons´agok be´all´ıt´as´at´ ol szintaxis: hivatkoz´as a be´ırt sz¨ ovegre: name.Text Pl. WebControlsPl.aspx web kontrolok – Referencia
21 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
N´eh´any gyakran haszn´alt web kontrol: web kontrol t´ıpusa AdRotator Button Calendar Checkbox CheckBoxList DropDownList Image ImageButton ImageMap Label Panel RadioButton RadioButtonList Table TableCell TableRow TextBox
Neki megfeleltethet˝ o (X)HTML elem(ek) ´es nincs nincs <select> nincs nincs nincs
nincs
,
22 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
Megjegyz´es: Egyes vez´erl˝ ok (pl. CheckBox, CheckBoxList, DropDownList, TextBox) rendelkeznek egy AutoPostBack tulajdons´aggal. Ha ez be van ´all´ıtva, a vez´erl˝ o ´ert´ek´enek m´ odos´ıt´asa automatikusan postback-et gener´al. Pl. l´asd (k´es˝ obb) SessionHandlingPl.aspx
23 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
Vez´erl˝ok ´allapot´anak meg˝orz´ese - ViewState seg´ıts´eg´evel View state: az ASP.NET implicit megold´ast k´ın´al a vez´erl˝ ok ´allapot´anak (NEM a form elemek ´ert´ek´enek) k´et “postback” k¨ oz¨ otti meg˝orz´es´ere egy´eb oldal-specifikus adatok ideiglenes lement´es´ere is haszn´alhatjuk a dokumentum oszt´aly rendelkezik egy ViewState nev˝ u StateBag t´ıpus´ u adattaggal, melybe a vez´erl˝ ok ´allapota le lesz mentve a v´alasz gener´al´asa sor´an a ViewState szerializ´alva lesz, illetve el lesz k¨ uldve a kliens b¨ ong´esz˝ ore egy VIEWSTATE nev˝ u hidden mez˝ok´ent a view state haszn´alata kikapcsolhat´ o, ha sz¨ uks´eges ViewStateMode =”Disabled” vagy EnableViewState=”false” oldal szinten (a @ Page direkt´ıv´aban) vez´erl˝ o szinten 24 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
view state ASP.NET dokumentum ´eletciklusa:
Pl. l´asd: ViewStatePl.aspx 25 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
´ enyess´eg-vizsg´al´o kontrolok Erv´ a felhaszn´al´ o ´altal bevitt adatok ellen˝ orz´es´et teszik lehet˝ov´e hiba eset´en a megfelel˝ o hiba¨ uzenet megjelen´ıt´ese testreszabhat´o HTML- illetve web kontrolokkal egyar´ant haszn´alhat´oak K¨ ul¨ onb¨ oz˝ o t´ıpus´ u ´erv´enyess´eg-vizsg´al´ o vez´erl˝ ok: RequiredFieldValidator – biztos´ıtja, hogy a k¨ otelez˝o bemenetet mindenk´eppen kit¨ oltse a felhaszn´al´ o CompareValidator – ¨ osszehasonl´ıt´ast v´egez egy adott ´ert´ekkel RangeValidator – megvizsg´alja, hogy az ´ert´ek egy megadott intervallumban van RegularExpressionValidator – megvizsg´alja, hogy a ´ert´ek megfelel-e egy megadott regul´aris kifejez´esnek (pl. e-mailc´ım, telefonsz´am ellen˝ orz´ese) CustomValidator – felhaszn´al´ o ´altal defini´alt funkcionalit´as az ellen˝ orz´es v´egezhet˝ o kliens ´es/vagy szerver oldalon 26 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
ValidationSummary – az ´erv´enyess´eg-vizsg´alat sor´an ´eszlelt hib´ak osszes´ıt´es´ere ad lehet˝ ¨ os´eget Megjegyz´es: Az ASP.NET automatikusan ellen˝ orzi az esetlegesen “rosszindulat´ u” bemenetet (pl. HTML elemek, script k´ od), akkor is, ha nem haszn´alunk k¨ ul¨ on ´erv´enyess´eg-vizsg´al´ o vez´erl˝ oket Pl. ErvenyessegEllenorzesPl.aspx Validation controls – Referencia
27 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
ASP.NET oldal ´eletciklusa Egy ASP.NET oldal ´eletciklusa sor´an k¨ ul¨ onb¨ oz˝ o f´azisokon megy kereszt¨ ul: inicializ´al´as, vez´erl˝ ok p´eld´anyos´ıt´asa, ´allapot meg˝ orz´es/vissza´all´ıt´as, esem´enykezel˝ ok futtat´asa, kimenet gener´al´asa (rendering) F´azisok: K´er´es ´erkezik – Az ASP.NET eld¨ onti, hogy sz¨ uks´eg van-e az oldal feldolgoz´as´ara vagy visszak¨ uldhet˝ o a cache-ben t´arolt v´altozat Start – Request, Response, IsPostBack, illetve UICulture be´all´ıt´asa Inicializ´al´as – az oldalon szerepl˝ o vez´erl˝ ok el´erhet˝ ov´e v´alnak (de az ´allapotuk m´eg nincs a view state alapj´an be´all´ıtva) Load – postback k´er´es eset´en a vez´erl˝ ok ´allapota inicializ´alva lesz a view state alapj´an folyt. ... 28 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
ASP.NET oldal ´eletciklusa (folyt.)
F´azisok (folyt.) Postback esem´eny-kezel´es – postback eset´en megh´ıv´odnak a vez´erl˝ok megfelel˝ o esem´enykezel˝ oi, majd az ´erv´enyess´eg-vizsg´al´o vez´erl˝ok ´erv´enyess´egvizsg´al´ o met´ odusai (megj. az ´erv´enyess´egvizsg´alatot kiv´alt´ o esem´eny esem´enykezel˝ oje csak ezt k¨ ovet˝ oen lesz megh´ıvva) Kimenetgener´al´as (rendering) – el˝ otte az ¨ osszes vez´erl˝o eset´en le lesz mentve a view state. Megh´ıv´ odik rekurz´ıvan a vez´erl˝ok Render met´ odusa Unload – miut´an a v´alasz el lett k¨ uldve a kliensnek, a m´ar nem sz¨ uks´eges adatstrukt´ ur´ak t¨ orl´es´ere ker¨ ul sor
29 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
ASP.NET szerver-oldali vez´erl˝ok esem´eny modellje esem´eny-modell: az ASP.NET egy esem´eny-alap´ u modellt k´ın´al a dokumentumok szerver-oldali programoz´as´ara az esem´eny kliens oldalon v´alt´ odik ki az esem´eny kezel´ese szerver-oldalon t¨ ort´enik a k¨ ul¨ onb¨ oz˝ o vez´erl˝ okh¨ oz kapcsol´ od´ o, szerver-oldalon kezelhet˝o tipikus esem´enyek: kattint´ as – automatikus postback m´ odos´ıt´ as (csak egyes vez´erl˝ okn´el) – hat´ asuk a k¨ ovetkez˝ o postback-ig k´esleltetve van/ vagy azonnali postback (l´ asd: AutoPostBack tulajdons´ ag)
a vez´erl˝ ok ´es maga az oldal is gener´alhat u ´n. ´eletciklus-esem´enyeket: Init, Load, PreRender
30 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
Esem´enykezel´es Esem´enykezel˝ ok k´et param´eter: az esem´enyt gener´al´ o objektum (sender), esem´eny objektum (az esem´ennyel kapcsolatos inform´aci´ ok – e)) oldalhoz kapcsol´ od´ o esem´enyek eset´en automatikus esem´eny-esem´enykezel˝ o hozz´arendel´es (a @ Page direkt´ıva AutoEventWireup attrib´ utuma be kell legyen ´all´ıtva) n´evkonvenci´o alapj´an: Page esem´eny vez´erl˝ oh¨ oz kapcsol´ od´ o esem´enykezel˝ o megad´asa (pl.): protected void NameChange(object sender, EventArgs e) { //...k´ od }
31 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
Esem´enykezel´es
Esem´enyek sorrendje postback-et k¨ ovet˝ oen: a Page inicializ´al´ o esem´enyei: Page Init (view state bel¨otl´ese) Page Load vez´erl˝ ok ´altal gener´alt esem´enyek a Page PreRender esem´enye a view state ment´ese kimenet gener´al´asa (rendering) Unload b˝ ovebben: l´asd: PageLifeCycle.png
32 / 33
Bevezet´ es
Alapok
Kontrolok
´ Eletciklus
Bels˝o objektumok
Az ASP.NET az al´abbi bels˝ o objektumokat (intrinsic objects) bocs´atja rendelkez´esre: Objektum Response Request Context Server Application Session
ASP.NET oszt´ aly HttpResponse HttpResponse HttpContext HttpServerUtility HttpApplicationState HttpSessionState