AspNet.sk     Diskusné fóra     Vitajte v QuickStarts     ASP.NET     Silverlight     Ako môžem...? (en)     Class prehliadač Príklady chcem v ...   
Menu
Skip Navigation Links.
Späť na ASP.NET príručku

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
Run Sample View Source

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
Run Sample View Source

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
Run Sample View Source

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
Run Sample View Source
Microsoft .NET Framework SDK QuickStart Tutorials Version 2.0
Copyright © 2005 Microsoft Corporation. All rights reserved.
Preklad do slovenského jazyka - Copyright © 2005 - 2007 www.aspnet.sk, www.qsh.sk
Pošlite komentár k tejto stránke
Copyright © 2002 - 2008 Chastia, spol. s r. o., Igor Stanek, Designed by Lacino
Portál je hostovaný na serveroch firmy Quantasoft - www.qsh.sk.