Master Pages v ASP.NET 2.0
Tentokrát bude mým úkolem seznámit vás s problematikou Master Pages na platformě .NET 2.0. Master Pages jsou jakési šablony, které vám umožní zachovat stejný vzhled celé webové aplikace s vynaložením opravdu minimálního úsilí. Zjednodušeně řečeno, vše funguje tak, že vytvoříme jedinou stránku (Master Page), kam umístíme základní prvky, které jsou pro celý web stejné (například menu, logo, footer) a určíme místo (nebo místa) kam budeme dynamicky „vkládat“ jednotlivé Content Pages v závislosti na konkrétním požadavku.
Abych předešel zbytečným nezdarům, hned na začátku připomínám, že Master Pages se vyskytují až ASP.NET 2.0. Kdybyste chtěli příklady z tohoto článku zkoušet v .NET Frameworku 1.x, nejspíš byste moc nepochodili. (V době vzniku tohoto textu je na webu Microsoftu k dispozici .NET Framework 2.0 ve verzi BETA 1.)
Postup při tvoření Master Page je víceméně stejný, jako postup při budování normální ASP.NET stránky. Celá změna spočívá pouze v tom, že místo direktivy <%@ Page %>
použijete novou direktivu <%@ Master %>
a zvláštní příponu vyhrazenou pouze pro Master Pages – .master
.
Do Master Page můžete vkládat všechny elementy stejným způsobem jako do klasické stránky. Většinou je v ní obsažena celá kostra stránky, včetně XHTML hlavičky. Master Page by navíc měla obsahovat speciální prvek ContentPlaceHolder
. Ten může být pouze uvnitř Master Page a to v počtu neomezeném. Prvek ContentPlaceHolder
představuje místo, kde se budou zobrazovat různé Content Pages vždy podle konkrétního požadavku.
Z mého dosavadního výkladu není jasné jak vůbec takový požadavek probíhá, tak raději splatím dluh hned teď. Požadavek je vždy směřován na .aspx
stránky. Je-li tato stránka spojena s nějakou Master Page, je tato Master Page vyhledána, vezme se kód v ní a do příslušných prvků ContentPlaceHolder
se nahrají jednotlivé části z požadované Content Page.
Pojďme ale vytvořit nějakou jednoduchou Master Page:
<%@ Master %>
<script runat=“server“>
</script>
<html>
<head>
<title>Simple Master Page</title>
</head>
<body>
<form id=“form1″ runat=“server“>
<table cellpadding=“5″>
<tr>
<td colspan=“2″>
<h1>MOJE WEBSITE</h1>
</td>
</tr>
<tr>
<td style=“background-color: Silver“>
<h3>Navigace</h3>
<li><a href=“default.aspx“>Úvodní
stránka</a></li>
<li><a href=“Contacts.aspx“>Kontakt</a></li>
</td>
<td>
<asp:contentplaceholder id=“ContentPlaceHolder1″ runat=“server“>
</asp:contentplaceholder>
</td>
</tr>
</table>
</form>
</body>
</html>
Toto je opravdu jednoduchá stránka (je mi jasné, že jako webdesignéra byste mě asi upálili). Teď jsou na řadě nějaké ty Content Pages, například úvodní stránka…
<%@ Page Language=“C#“ MasterPageFile=“~/MasterPage.master“ Title=“Moje Website – Úvodní stránka“%>
<asp:Content ID=“Content1″
ContentPlaceHolderID=“ContentPlaceHolder1″
Runat=“server“>
Úvodní stránka…
</asp:Content>
…a seznam kontaktů:
<%@ Page Language=“C#“ MasterPageFile=“~/MasterPage.master“ Title=“Moje Website – Kontakty“%>
<asp:Content ID=“Content1″
ContentPlaceHolderID=“ContentPlaceHolder1″
Runat=“server“>
Telefon: +420 777 888 999 <br/>
ICQ: 123-456-789
</asp:Content>
Kód Content Page začíná direktivou <%@ Page %>
. Chcete-li však, aby se tato stránka zobrazila uvnitř Master Page, budete muset přidat atribut MasterPageFile
a uvést cestu k této „hostitelské“ stránce. Dále jsem použil atribut title
, který překrývá element <title>
v hlavičce základní stránky. Tento atribut není povinný, vynecháte-li ho, titulek se vezme z Master Page – v našem případě „Simple Master Page“.
Dále by měla Content Page obsahovat prvek <asp:Content />
, který je jakýmsi nositelem samotného obsahu na Content Page. Mezi atributy, které byste neměli zapomenout, patří ID
, Runat
a ContentPlaceHolderId
. Funkci prvních dvou zajisté vysvětlovat nemusím. Jak jsem již zmínil, Master Page může obsahovat i více než jeden ContentPlaceHolder
, právě aribut ContentPlaceHolderId
určuje, do kterého z nich se zobrazí obsah umístěný uvnitř prvku Content
.
Čas od času je potřeba přistupovat k prvkům obsažených v Master Page z kódu uvnitř Content Page. Content Page obsahují vlastnost Master
, která vrací odkaz na jejich aktuálně použitou Master Page. Chcete-li například změnit text prvku Label
na Master Page, můžete to učinit takto:
Label masterLabel = (Label)Master.FindControl(„label“);
masterLabel.Text = „nový text na master page „;
Jak vidíte, Master Pages nabízejí vývojářům celkem slušný komfort při tvorbě rozsáhlejších webových aplikací. Je to jedna z povedených novinek v ASP.NET druhé generace. Je samozřejmě pravda, že tato inovace nepřinesla nic závratně nového, obdobného efektu se dalo dosáhnout například použitím prvku PlaceHolder
na úvodní stránce a dynamického nahrávání User Controls podle parametru v URL a podobně, použití Master Pages je však už na první pohled mnohem pohodlnější a elegantnější, takže se celá aplikace stává o poznání přehlednější.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Optimalizace a zlepšení výkonu kódu: tipy a triky
14. srpna 2023 -
Webový správce souborů Filestash – dojmy a recenze
29. července 2024 -
AI v programování: Jak používat GitHub Copilot (část 2)
19. února 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024