70 – 562: Using Master Pages

Artykuł pochodzi w serii przygotowań do egzaminu 70-562 ASP.NET.

W dzisiejszej lekcji mowa będzie o dwóch rzeczach a mianowicie: Master Pages oraz Content Pages.

Czym jest Master Page

Najprościej mówiąc Master Page jest to jakaś główna część naszej strony, która pozostaje niezmienna, w której możemy umieścić jakąś wspólną funkcjonalność strony. Np. layout, który ma jakiś top, stopkę i menu. Wrzucamy to w master page bo jest to część która nie zmienia się na naszej stronie. Wymienny jest tylko środek layoutu czyli strony typu Content, o których powiemy sobie później.
Master page definiujemy w pliku z rozszerzeniem *.master. Plik ten jest bardzo podobny do zwykłej strony .aspx. Jedną z różnic pomiędzy tymi plikami jest to, że master page dziedziczy po klasie MasterPage.

Tworzenie Master Page

Aby stworzyć nowy master page wybieramy: Add New Item –> Master Page.
Przykładowy kod takiego pliku może wyglądać tak:

   1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   2: "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   3: <html xmlns="http://www.w3.org/1999/xhtml">
   4:   <head runat="server">
   5:     <title>Contoso Inc.</title>
   6:     <asp:ContentPlaceHolder id="head" runat="server">
   7:     </asp:ContentPlaceHolder>
   8:     <link href="SiteStyles.css" rel="stylesheet" type="text/css" />
   9:   </head>
  10: <body>
  11:   <form id="form1" runat="server">
  12:    <div class="header">
  13:     <img src="images/contoso.jpg" alt="Contoso" />
  14:     <a href="products.aspx" class="topNav"> Products</a>
  15:     <a href="services.aspx" class="topNav"> Services</a>
  16:     <a href="about.aspx" class="topNav"> About</a>
  17:     <a href="contact.aspx" class="topNav"> Contact</a>
  18:    <hr /> </div>
  19:    <asp:ContentPlaceHolder id="ContentPlaceHolderMain" runat="server">
  20:     </asp:ContentPlaceHolder>
  21:    <div class="footer">Copyright <%= DateTime.Now.Year.ToString() %> 
  22:        Contoso </div>
  23: </form>
  24: </body>
  25: </html>

W tym przykładzie dołączyliśmy do master page style css, zrobiliśmy za ich pomocą nawigację, cały top oraz stopkę strony. Pomiędzy górną nawigacja a stopką strony widzimy miejsce, w którym umieszczane będą strony z treścią.
image

Tworzenie stron z zawartością

Tworzenie stron z treścią/zawartością (ang. content pages) tworzy się praktycznie identycznie jak zwykłe strony. Jedyną rzeczą, którą dodatkowo musimy zrobić podczas tworzenia, jest zaznaczenie checkboxa “Select Master Page”.  W projekcie asp .net web application nie będzie checkboxa ale inny typ widoku: content web form. Tam również zostaniemy poproszeni o wybranie pliku z master page.
Po stworzeniu strony zobaczymy mniej więcej coś takiego:

   1: <%@ Page Title="" Language="C#" MasterPageFile="~/Site1.Master" 
   2:    AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs"
   3:    Inherits="test.Web.WebForm1" %>
   4: <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
   5: </asp:Content>
   6:  
   7: <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolderMain"
   8:     runat="server">
   9: </asp:Content>

Widzimy, że w dyrektywach dodana jest MasterPageFile. Dalej mamy dwa ContentPlaceHolder’y. Odpowiadają one tym samym, które są w master page. Jeśli np. wstawimy naszą zawartość w ContentPlaceHolderMain, wtedy pojawi się ona (bazując na przykładzie pokazywanym wyżej) między nawigacją na górze a stopką.

Tworzenie właściwości w Master Page

W master page możemy tworzyć właściwości w celu udostępnienia jakiś specyficznych ustawień itp. Np. jeśli wiele stron z zawartością potrzebuje Id użytkownika, możemy stworzyć właściwość wewnątrz master page i udostępnić ją do różnych stron. W poniższym przykładzie tworzymy właściwość UserId, do której będziemy mieli dostęp jak tylko będziemy mieli referencję w stronie z zawartością:

   1: public string UserId
   2: {
   3:     get { return (String)Session["UserId"]; }
   4:     set { Session["UserId"] = value; }
   5: }

 

Aby teraz skorzystać z niej w stronie z zawartością należy dodać nową dyrektywę:

   1: <%@ MasterType VirtualPath="~/SiteMaster.Master" %>

Po dodaniu dyrektywy przechodzimy do code behind strony i tam odwołujemy się do naszej właściwości poprzez klasę master np. tak:

   1: Login1.UserName = Master.UserId;


To tyle z grubsza o Master Page :) Zapraszam w piątek na kolejną część z naszej serii :)

Tagi: , , ,

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading


Eastgroup.pl na facebooku