|
|
ASP.NET QuickStart Príručka
Definovanie vzhľadu stránok prostredníctvom Master Pages
Čo je nové vo verzií 2.0
- Master Pages - Funkcie Master Pages poskytujú možnosť inteligentne definovať
spoločnú štruktúru a základné elementy pre Vašu stránku, tak ako aj pre hlavičku
stránky, pätku alebo navigačný panel, v spoločnom umiestnení "master pages", ktoré
možu byť rozdelené do viacerých podstránok vášho webu. Toto je zlepšenie údržby
Vašej stránky a zrušenie nadbytočnej duplicity kódu pre spoločné stránky alebo priebehy.
Tento oddiel hovorí o funkciách Master Pages v ASP.NET 2.0.
Práve tak ako Themes a Skins dovoľujú vybrať štýl zo zdrojoveho kódu stránky a udržiavať
ho v spoločnom súbore, tak Master Pages robí to isté s umiestňovaním elementov.
Master Page je stránka, ktorá obsahuje ovládacie prvky, ktoré sú používané
na viacerých podstránkach Vášho webu. Napríklad, ak všetky Vaše stránky obsahujú
rovnaké reklamné prúžky v hlavičke a pätke stránky, alebo rovnaké navigačné menu,
potom môžu byť tieto prvky definované v Master Page a všetky stránky asociované
k tomuto Master Page budú dediť spoločné elementy. Výhoda definovania hlavičky,
pätky a navigácie v Master Page je, že tieto elementy je potrebné definovať iba
raz namiesto mnohonásobným definíciam v zdrojových kódoch viacerých stránok Vášho
webu.
Master a Content stránky
Vytvorenie Master Page je podobné ako vytvorenie bežných stránok. Master Pages môžu
obsahovať tagy, ovladacie prvky, programový kód alebo rôzne kombinácie týchto elementov.
Ale Master Page môže obsahovať aj špeciálny typ ovládacieho prvku, ContentPlaceHolder.
ContentPlaceHolder definuje oblasť Master Page, ktorá môže byť vyplnená obsahom
stránky odvodenej z Master Page. ContentPlaceHolder môže taktiež obsahovať preddefinovaný
obsah, ktorý sa zobrazí pokiaľ na stránke nebude definovaný žiadny iný. Syntax ovládacieho
prvku ContentPlaceHolder je následovná:
<%-- Ovládací prvok ContentPlaceHolder --%>
<asp:contentplaceholder id="FlowerText" runat="server"/>
<%-- Ovládací prvok ContentPlaceHolder s preddefinovanám obsahom --%>
<asp:contentplaceholder id="FlowerText" runat="server">
<h3>Vitajte na mojej stránke kvetov!</h3>
</asp:contentplaceholder>
Pre rozlíšenie Master Page od ostatných stránok sa Master Page ukladá do súboru
s príponou .master. Stránky sa odvodzujú z Master Page pomocou atribútu MasterPageFile
direktívy Page, tak ako je to demonštrované nižšie. Stránka, ktora je odvodená z
Master Page, sa nazýva Content Page.
<%@ Page MasterPageFile="Site.master" %>
V Content Page môžu byť deklarované ovládacie prvky Content, ktoré špecificky
prepisujú obsah ContentPlaceHolder v Master Page. Ovládací prvok Content je pridružený
k ovládaciemu prvku ContentPlaceHolder cez jeho vlastnosť ContentPlaceHolderID.
Tagy a ovládacie prvky je možné používať v Content Page len vo vnútri ovládacieho
prvku Content; nemôže mať žiaden nadriadenejší obsah,ako seba sameho. Ale môže obsahovať
direktívy alebo programový kód.
<%@ Page MasterPageFile="Site.master" %>
<asp:content id="Content1" contentplaceholderid="FlowerText" runat="server">
So slnečnými lúčmi, vodou a opatrnou starostlivosťou budú ruže kvitnúť viackrát za sezónu.
</asp:content>
<asp:content id="Content2" contentplaceholderid="FlowerPicture" runat="server">
<asp:Image id="image1" imageurl="~/images/rose.jpg" runat="server"/>
</asp:content>
Následujúci príklad ukazuje vzájomný vzťah medzi Master a Content pages. Master
Page definuje dva regióny ContentPlaceHolder, FlowerPicture a FlowerText.
Oba s predvoleným obsahom. Každé Content Pages na webe zdedia spoločné rozmiestnenie
elementov a funkcie z Master Page, ale prepríšu predvolený obsah jednotlivých regiónov
ContentPlaceHolder svojím vlastným obsahom. Poznámka: Ak default.aspx na tomto webe
neobsahuje žiadný ovládací prvok Content, tak potom stránka zdedi prednastavený
obsah z Master Page.
VB Master a Content Pages
Prepis URL v Master Page
Jedná vec k povšimnutiu je aj to, že v Master Page sa môže objaviť viacero elementov
(napr.: obrazky, externé kaskadové štýly ...), ktoré sa načítavajú relatívnou cestou.
Napríklad:
<head>
<link rel="stylesheet" href="StyleSheet.css" type="text/css" />
</head>
...
<a href="daffodil.aspx">Daffodil</a>
...
<img alt="water lilies" src="Images/waterlilies.jpg"/>
Takto to pracuje bezproblémovo, ak Master Page a Content Page su v jednom priečinku.
Ale keď je Content Page vo fyzicky odlišnom umiestnení, tak potom relatívna cesta
nie je správna. Tento problém sa dá odstrániť nasledujúcimi postupmi:
- Používať absolútnu cestu v Master Page. Napríklad: <img src="/myapplication/images/banner.gif"
/>
-
Používať relatívnu, alebo aplikačne-relatívnu, URL v serverových ovládacích prvkoch
miesto statických tagov. Napríklad: <asp:Image ImageUrl="~/images/banner.gif"
runat="server" />
Nasledujúci príklad ukazuje túto techniku. Content Pages boli presunuté do podadresára
"Pages" koreňového adresára, ktorý obsahuje Master Page. V zdrojovom kóde Master
Page boli staticke tagy nahradené serverovými ovládacími prvkami :
<head runat="server">
<link rel="stylesheet" href="StyleSheet.css" type="text/css" />
</head>
...
<a id="A1" href="pages/daffodil.aspx" runat="server">Daffodil</a/>
...
<asp:Image ID="Image1" AlternateText="Water Lillies" ImageUrl="~/Images/Waterlilies.jpg" runat="server"/>
VB Mapovanie URL v Master Pages
Pristupovanie k Master Page z kódu
Okrem prepísania obsahu dokáže Content Page aj nahranie Master Page programovo.
Content Page vytvára silno-typové referencie na Master Page použitím direktívy
<%@ MasterType %>, špecifikujúcej virtuálnu cestu k Master Page:
<%@ MasterType VirtualPath="Site.master" %>
Content Page sa potom môže odkázať na Master Page použitím vlastnosti Master
triedy Page:
Master.FooterText = "Toto je uživateľsky nastaviteľná pätka"
Dim ad As AdRotator = Master.FindControl("MyAdRotator")
VB
FooterText je verejná vlastnosť vystavená na Master Page, zatiaľ čo
MyAdRotator je ovladací prvok Master Page. Nasledujúci príklad ukazuje
použitie tohto kódu v akcií:
VB Prístup k Master Page z kódu
Vnorovanie Master Pages
Content Pages môžu byť tiež Master Pages. To znamená, že je možné odvodzovať Master
Page z ineho Master Page. Napríklad, môžete mať koreňovú Master Page, ktorá reprezentuje
celkovú stránku, hlavičku, pätku a navigáciu Vášho webu, a potom ďalšie Master Pages,
ktoré sú odvodené z tohto Master Page, k definovaniu vzhľadu pre rôzne podsekcie.
Content Pages by potom mohli byť dedené z tých častí Master Page, ku ktorým patria.
Nasledujúci príklad ukazuje túto myšlienku na rozdelení Kvetinovej príkladovej stránky
do dvoch sekcií, jednoročné rastliny a trvalky.
VB Vnorené Master Pages
|
|