Egy ASP.NET oldal a a következő két részből áll:
A vizuális elemek kezelésére az ASP.NET két modellt bocsát rendelkezésünkre:
Mind a két modell nagyjából ugyanúgy működik. Ugyanazokat a control -okat és kódot használhatjuk mind a két esetben. Az alábbi kód a single-file model -re mutat példát:
Single-file modell esetén a kódot script tag -ok között kell elhelyezni. A kód tetszőleges hosszúságú lehet, tartalmazhat az oldalon elhelyezett control -okhoz tartozó eseménykezelőket, metódusokat, property -ket és bármilyen kódot, amely egy osztályban előfordulhat. Futás közben egy single-file oldalt az ASP úgy kezel mint egy, a Page osztályból származó osztályt. Az oldal nem tartalmaz explicit osztály deklarációt, ehelyett a fordító egy új osztályt generál amely tartalmaz minden control -t mint member -t.
Megjegyzés: Nem minden a .NET által támogatott nyelv alkalmas code-behind fájlok létrehozására. A használni kívánt nyelvnek támogatnia kell a partial osztályokat. A J# például nem támogatja.
Az előbb felvázolt single-file model -nek megfelelő code-behind implementáció a következőképpen nézhet ki: Az .aspx file:
A code-behind és a single-file model .aspx fájljában két különbség van. A code-behind .aspx fájljában nincs script blokk runat="server" attribútum. (Tartalmazhat script blokkot runat="server" attribútummal. Ebben kliens oldali kódot helyezhetünk el.) A második különbség az, hogy a code-behind .aspx fájljában a @Page direktívájában szerepelnek azok az attribútumok melyek az oldalhoz tartózó kód forrás fájljára, illetve osztályára hivatkoznak. Ezek az attribútumok kötik össze a .aspx file -t a hozzá tartozó implementációval.
A kód egy külön fájlba kerül. A következő példakód egy code-behind fájlra mutat példát:
A code-behind file egy teljes osztálydeklarációt tartalmaz, amely a default névtéren jön létre. Az osztály partial -ként van deklarálva, ami azt jelzi, hogy nem az egész osztály van ebben a file -ban elhelyezve. Amikor az oldal fut, a fordító beolvassa a .aspx file -t és a forrás állományt - amit a @Page direktívában adtunk meg - és összeállítja egy osztályba, majd lefordítja. A partial osztályunk a Page osztály elemeit is örökli.
A single-file és code-behind modell funkcionálisan megegyezik. Ugyanúgy futnak le és nincs a kettő között teljesítménybeli különbség se. Így hát a modellválasztás csak attól függ, hogy hogyan akarjuk a kódunkat szervezni, azaz fontos -e számunkra, hogy a designt elválasszuk a forrástól.
A single-file oldalak előnyei (a single-file modell olyan oldalaknál előnyös, melyeknél a kód elsősorban eseménykezelőkből áll):
A code-behind oldalak előnyei (a code-behind olyan projektek esetében előnyös, melyek nagy mennyiségű kódot tartalmaznak illetve nagyobb csapat dolgozik a fejlesztésen):
Az ebben a részben leírtak alapján a programunk 4 .aspx fájlból és a hozzájuk tartozó implementációs állományokból áll. Az .aspx fájlok közül egynek kitüntetett szerepe van, ennek speciálisan .master a kiterjesztése. A master állományok egységes kinézetet adnak az oldalainknak. Ez akkor hasznos, ha például olyan navigációs gombokat akarunk elhelyezni a felületen, melyeknek minden esetben elérhetőnek kell lenniük. Ebben az esetben a master oldalunk két linket tartalmaz, az egyikkel a kvíz kitöltését kezdhetjük meg, a másikkal az eddigi eredményeket tekinthetjük meg.
Az iQuiz.master állomány:
Fontos megjegyezni, hogy nem a master oldalnál adjuk meg a hozzá tartozó oldalakat, hanem az.aspx állományoknál kell megadni, hogy melyik master fájl öleli körül. Az master oldal alá rendelt oldalak az <asp:contentplaceholder></asp:contentplaceholder> - helyére töltődnek be.