Master-Seiten

Eine Masterseite hat im Grunde dieselbe Aufgabe wie eine dynamische Webvorlage, nämlich die, allen Seiten, die dieser Masterseite angehören, dasselbe Aussehen und dieselben Elemente zu übertragen, die man auf allen Seiten sichtbar sein sollen.

Die dynamische Webvorlage braucht für ihre Funktion das Programm Expression Web und sie wird ausgeführt, indem einer gegebenen Seite die dynamische Webvorlage aufgeprägt wird, d.h. alle Inhalte der dynamischen Webvorlage werden in die Webseite übernommen. Dieser Vorgang geschieht während der Bearbeitung einer Seite mit Expression Web.
html := dwt + html
Verändert man die dynamische Webvorlage, fordert Expression Web dazu auf, auch alle anderen Seiten, die auf dieser Vorlage beruhen, neu zu erstellen, denn es muss ja der gesamte Kode der Snamischen Webvorlage in jede einzelne HTML-Seite übertragen werden.

Die Masterseite braucht für ihre Funktion aber einen Webserver, denn bei Masterseiten wird die Seite erst beim Aufruf durch den Benutzer am Server berechnet.
html := master + aspx

Da Expression Web mit einem eigenen Webserver ausgerüstet ist, kann man Masterseiten auch im Rahmen von Expression Web testen aber man kann die Aspx-Seiten nicht am Desktop mit einem Browser öffnen, so wie das bei den Html-Seiten und den dynamischen Webvorlagen der Fall ist.

Die Komposition der Html-Seite aus Master- + Aspx-Seite erfolgt durch folgendes Konstrukt.

Masterseite

Eine leere Masterseite schaut fast wie eine leere Aspx-Seite aus:

<%@ Master Language="C#" AutoEventWireup="true" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="Head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ContentPlaceHolder ID="Content" runat="server">
        
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

Im Kopf steht Master statt Page.
Im Head und im Body stehen zwei ContentPlaceHolder, die den Kode aus der Aspx-Seite übernehmen werden.
Den Zusammenhang mit dem richtigen PlaceHolder übernehmen die beiden IDs, head und content.
Eine Masterseite kann auch mehrere solcher Platzhalter aufweisen, zum Beispiel, wenn Inhalt an mehreren Stellen einzufügen ist.

In Expression Web wird eine Masterseite erstellt mit:
Datei -> Neu -> Seite - Allgemein -> Masterseite

Aspx-Seite, die auf einer Master-Seite beruht

Eine leere Aspx-Seite, die auf einer Masterseite beruht, enthält keinerlei Html-Elemente mehr, denn die erbt sie von der Masterseite. Es gibt jetzt so viele Content-Controls als es dafür PlaceHolder auf der Masterseite gibt.

<%@ Page Title="" Language="C#" MasterPageFile="~/documentation/files/LeereMasterDatei.Master" AutoEventWireup="true" %>

<asp:Content ID="Content1" ContentPlaceHolderID="Head" runat="server">
    <!-- Hier steht der Kode, der in den Kopf-Teil der Html-Seite einzufügen ist -->
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="Content" runat="server">
    <!-- Hier steht der Kode, der in den Body-Teil der Html-Seite einzufügen ist. 
         Konkret an jene Stelle, an der der PlaceHolder in der MasterSeite steht. -->
</asp:Content>

In Expression Web wird eine Aspx-Seite, die auf einer Masterseite beruht, erstellt mit:
Datei -> Neu -> Seite -> Allgemein -> Aus Masterseite erstellen