Exemplarische Vorgehensweise: Erstellen und Verwenden von ASP.NET-Masterseiten in Visual Web Developer
Aktualisiert: November 2007
Diese exemplarische Vorgehensweise illustriert, wie eine Masterseite und mehrere Inhaltsseiten erstellt werden. Mithilfe von Masterseiten können Sie ein Seitenlayout – eine Vorlagenseite – und anschließend einzelne Seiten mit Inhalt erstellen, der zur Laufzeit mit der Masterseite zusammengeführt wird. Weitere Informationen zu Masterseiten finden Sie unter Übersicht über ASP.NET-Masterseiten.
Zu den Aufgaben in dieser exemplarischen Vorgehensweise gehören:
Erstellen von Masterseiten
Erstellen einer ASP.NET-Seite mit Inhalt, der in der Masterseite angezeigt werden soll
Ausführen von Masterseiten zum Anzeigen anderer Inhalte
Auswählen einer Masterseite zur Laufzeit
Vorbereitungsmaßnahmen
Für die Durchführung dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:
Visual Studio oder Microsoft Visual Web Developer Express Edition.
Optional eine JPG-, GIF- oder andere Grafikdatei, die als Logo auf der Masterseite verwendet werden kann. Das Logo sollte höchstens 48 Pixel breit sein. Das Anzeigen eines Logos ist jedoch optional, und die genaue Größe der Grafik ist für die exemplarische Vorgehensweise nicht entscheidend.
Erstellen einer Website
Wenn Sie bereits eine Website mit Visual Web Developer erstellt haben (beispielsweise nach der Anleitung in Exemplarische Vorgehensweise: Erstellen einer einfachen Webseite in Visual Web Developer), können Sie diese verwenden und zum nächsten Abschnitt Erstellen der Masterseite übergehen. Erstellen Sie andernfalls eine neue Website und eine neue Webseite, indem Sie folgende Schritte ausführen.
So erstellen Sie eine Dateisystem-Website
Öffnen Sie Visual Web Developer.
Klicken Sie im Menü Datei auf Neue Website.
Das Dialogfeld Neue Website wird angezeigt.
Klicken Sie unter Von Visual Studio installierte Vorlagen auf ASP.NET-Website.
Geben Sie im Feld Speicherort den Namen des Ordners ein, in dem Sie die Seiten der Website speichern möchten.
Geben Sie zum Beispiel den Ordnernamen C:\WebSites ein.
Klicken Sie in der Liste Sprachen auf die Programmiersprache, in der Sie arbeiten möchten.
Klicken Sie auf OK.
Visual Web Developer erstellt den Ordner und die neue Seite Default.aspx.
Erstellen der Masterseite
Die Masterseite ist die Vorlage für das Erscheinungsbild der Seiten. In diesem Abschnitt erstellen Sie zuerst eine Masterseite. Anschließend erstellen Sie mithilfe einer Tabelle das Layout der Meisterseite mit einem Menü, einem Logo und einer Fußzeile, die auf jeder Seite Ihrer Website angezeigt werden. Sie arbeiten auch mit einem Platzhalter für Inhalt. Dies ist ein Bereich auf der Masterseite, der auf einer Inhaltsseite durch Informationen ersetzt werden kann.
So erstellen Sie die Masterseite
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Website, und klicken Sie anschließend auf Neues Element hinzufügen.
Klicken Sie unter Von Visual Studio installierte Vorlagen auf Masterseite.
Geben Sie im Feld Name die Zeichenfolge Master1 ein.
Aktivieren Sie das Kontrollkästchen Code in eigener Datei platzieren.
Hinweis: In dieser exemplarischen Vorgehensweise wird davon ausgegangen, dass Sie für alle Seiten Code-Behind-Dateien verwenden. Wenn Sie eine ASP.NET-Seite verwenden, die aus einer einzelnen Datei besteht, wird der in der exemplarischen Vorgehensweise dargestellte Code ordnungsgemäß ausgeführt. Er wird allerdings in der Quellansicht angezeigt und nicht in einer eigenen Codedatei.
Klicken Sie in der Liste Sprache auf die von Ihnen bevorzugte Programmiersprache, und klicken Sie anschließend auf Hinzufügen.
Die neue Masterseite wird in der Quellansicht geöffnet.
Im oberen Bereich der Seite befindet sich eine @ Master-Deklaration anstelle der @ Page-Deklaration, die normalerweise im oberen Bereich von ASP.NET-Seiten zu finden ist. Der Textteil der Seite enthält ein ContentPlaceHolder-Steuerelement. Dies ist der Bereich der Masterseite, in dem austauschbarer Inhalt von den Inhaltsseiten zur Laufzeit zusammengeführt wird. Später arbeiten Sie in dieser exemplarischen Vorgehensweise noch einmal mit dem Platzhalter für Inhalt.
Erstellen des Layouts für die Masterseite
Die Masterseite definiert das Erscheinungsbild der Seiten Ihrer Website. Sie kann eine beliebige Kombination von statischem Text und Steuerelementen enthalten. Eine Masterseite enthält auch mindestens einen Platzhalter für Inhalt, der angibt, an welchen Stellen beim Anzeigen der Seiten dynamischer Inhalt angezeigt wird.
In dieser exemplarischen Vorgehensweise verwenden Sie eine Tabelle, die Sie beim Positionieren von Elementen auf der Seite unterstützen soll. Sie erstellen zunächst eine Layouttabelle, die die Elemente der Masterseite enthält. Später in diesem Abschnitt positionieren Sie das Inhaltsplatzhalter-Steuerelement, das sich bereits auf der Seite befindet.
So erstellen Sie eine Layouttabelle für die Masterseite
Mit der in der Quellansicht ausgewählten Datei Master1.master legen Sie das Zielschema für die Validierung auf Microsoft Internet Explorer 6.0 fest. Zum Festlegen dieses Werts können Sie entweder die Dropdownliste auf der Symbolleiste verwenden oder im Menü Extras den Befehl Optionen auswählen und anschließend auf Validierung klicken.
Wechseln Sie in die Entwurfsansicht.
Wählen Sie oben im Eigenschaftenfenster in der Dropdownliste den Eintrag Dokument aus, und legen Sie dann BgColor auf eine auffällige Farbe fest, z. B. Blau.
Es ist nicht wichtig, welche Farbe Sie auswählen. Später in dieser exemplarischen Vorgehensweise erstellen Sie eine zweite Masterseite ohne Farbe, damit ein Unterschied zu der hiesigen Auswahl besteht.
Klicken Sie auf der Seite auf die Stelle, an der Sie die Layouttabelle platzieren möchten.
Hinweis: Fügen Sie die Layouttabelle nicht in das ContentPlaceHolder-Steuerelement ein.
Klicken Sie im Menü Tabelle auf Tabelle einfügen.
Erstellen Sie im Dialogfeld Tabelle einfügen eine Tabelle mit drei Zeilen und einer Spalte, und klicken Sie auf OK.
Platzieren Sie den Cursor in der zweiten Zeile der Tabelle.
Klicken Sie im Menü Tabelle im Untermenü Ändern auf Zellen teilen.
Wählen Sie im Dialogfeld Zellen teilen die Option In Spalten teilen aus, und klicken Sie dann auf OK.
Nehmen Sie die folgenden Einstellungen vor:
Klicken Sie in der mittleren Zeile auf die Spalte ganz links, und legen Sie im Fenster Eigenschaften deren Breite auf 48 fest.
Klicken Sie auf die oberste Zeile, und legen Sie im Fenster Eigenschaften deren Höhe auf 48 fest.
Klicken Sie auf die unterste Zeile, und legen Sie im Fenster Eigenschaften deren Höhe auf 48 fest.
Hinweis: Höhe und Breite können durch Ziehen der Tabellenzellgrenzen oder durch Markieren der Zelle und Festlegen der Werte im Fenster Eigenschaften festgelegt werden.
Wählen Sie alle Zellen in der Tabelle aus, und legen Sie BgColor auf eine andere Farbe fest als die Hintergrundfarbe.
Nach dem Erstellen des Tabellenlayouts können Sie der Masterseite Inhalt hinzufügen, der auf allen Seiten angezeigt wird. Fügen Sie einen Copyrightvermerk als Fußzeile und dann ein Menü hinzu. Wenn Sie über eine Logografik verfügen, können Sie auch diese hinzufügen.
So fügen Sie der Masterseite statischen Inhalt hinzu
Klicken Sie auf die unterste Zelle, und geben Sie anschließend den Footertext ein, z. B. Copyright 2007 Contoso Inc..
Ziehen Sie in der Toolbox aus der Steuerelementgruppe Navigation ein Menu-Steuerelement in die oberste Zelle.
Erstellen Sie ein Menü, indem Sie die folgenden Schritte befolgen:
Legen Sie die Orientation-Eigenschaft des Menu-Steuerelements auf Horizontal fest.
Klicken Sie auf das Smarttag auf dem Menu-Steuerelement, und klicken Sie im Dialogfeld Menüaufgaben auf Menüelemente bearbeiten.
Klicken Sie unter Elemente zweimal auf das Symbol Stammknoten hinzufügen, um zwei Menüelemente hinzuzufügen:
Klicken Sie auf den ersten Knoten, und legen Sie anschließend Text auf POS1 und href auf Home.aspx fest.
Klicken Sie auf den zweiten Knoten, und legen Sie dann Text auf About und href auf About.aspx fest.
Klicken Sie auf OK, um das Dialogfeld Menüelement-Editor zu schließen.
Wenn Sie über eine Grafikdatei verfügen, die als Logo verwendet werden kann, können Sie diese auf der Masterseite platzieren, indem Sie die folgenden Schritte ausführen:
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Namen der Website, und klicken Sie dann auf Vorhandenes Element hinzufügen.
Navigieren Sie zur Grafikdatei, markieren Sie die Grafikdatei, und klicken Sie dann auf Hinzufügen.
Ziehen Sie in der Toolbox aus der Gruppe Standard ein Image-Steuerelement in die mittlere linke Spalte der Tabelle.
Legen Sie die ImageUrl-Eigenschaft des Image-Steuerelements auf den Namen der Grafikdatei fest.
Sie können jetzt den Inhaltsplatzhalter positionieren, um die Stelle anzugeben, an der auf der Masterseite zur Laufzeit Inhalt angezeigt werden kann.
So fügen Sie einen Inhaltsplatzhalter hinzu
Ziehen Sie das ContentPlaceHolder-Steuerelement in die mittlere rechte Zelle.
Die ID-Eigenschaft des Steuerelements ist ContentPlaceholder1. Sie können diesen Namen beibehalten oder ändern. Wenn Sie den Namen ändern, notieren Sie sich den Namen, weil Sie ihn später wissen müssen.
Speichern Sie die Seite.
Erstellen von Inhalt für die Masterseite
Die Masterseite stellt die Vorlage für den Inhalt bereit. Der Inhalt für die Masterseite wird definiert, indem Sie eine ASP.NET-Seite erstellen, die der Masterseite zugeordnet wird. Die Inhaltsseite ist eine spezielle Form einer ASP.NET-Seite, die lediglich den mit der Masterseite zusammenzuführenden Inhalt enthält. Auf der Inhaltsseite fügen Sie den Text und die Steuerelemente hinzu, die angezeigt werden sollen, wenn Benutzer diese Seite anfordern.
In dieser exemplarischen Vorgehensweise fügen Sie zwei Seiten mit Inhalt für die Masterseite hinzu. Die erste ist eine Homepage, die zweite eine About-Seite (Infoseite).
So erstellen Sie die Homepage
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Namen der Website, und klicken Sie auf Neues Element hinzufügen.
Klicken Sie unter Von Visual Studio installierte Vorlagen auf Web Form.
Geben Sie im Feld Name die Zeichenfolge Home ein.
Klicken Sie in der Liste Sprachen auf die von Ihnen gewünschte Programmiersprache.
Aktivieren Sie das Kontrollkästchen Masterseite auswählen, und klicken Sie dann auf Hinzufügen.
Das Dialogfeld Masterseite auswählen wird angezeigt.
Klicken Sie auf Master1.master, und klicken Sie anschließend auf OK.
Eine neue ASPX-Datei wird erstellt. Die Seite enthält eine @ Page-Direktive, die die aktuelle Seite an die ausgewählte Masterseite mit dem MasterPageFile-Attribut anfügt, wie im folgenden Codebeispiel dargestellt.
[Visual Basic]
<%@ Page Language="VB" MasterPageFile="~/Master1.master" ... %>
[C#]
<%@ Page Language="C#" MasterPageFile="~/Master1.master" ... %>
Die Seite enthält auch ein Content-Steuerelement, mit dem Sie als Nächstes arbeiten.
Eine Inhaltsseite weist nicht die üblichen Elemente auf, die eine ASP.NET-Seite ausmachen, z. B. die Elemente html, body oder form. Stattdessen fügen Sie lediglich den Inhalt hinzu, der auf der Masterseite angezeigt werden soll, indem Sie die auf der Masterseite erstellten Platzhalterbereiche ersetzen.
So fügen Sie der Homepage Inhalt hinzu
Wechseln Sie in die Entwurfsansicht.
Die ContentPlaceHolder-Steuerelemente der Masterseite werden auf der neuen Inhaltsseite als Content-Steuerelemente angezeigt. Der Rest des Inhalts der Masterseite wird so angezeigt, dass das Layout sichtbar ist. Er wird jedoch abgeblendet angezeigt, da er nicht geändert werden kann, während eine Inhaltsseite bearbeitet wird.
Klicken Sie im Eigenschaftenfenster in der Dropdownliste auf Dokument, und legen Sie anschließend den Titel auf Contoso Home Page fest.
Der Titel kann für jede Inhaltsseite unabhängig festgelegt werden, sodass der korrekte Titel im Browser angezeigt wird, wenn der Inhalt mit der Masterseite zusammengeführt wird. Die Titelinformationen werden in der @ Page-Direktive der Inhaltsseite gespeichert.
Geben Sie in das Content-Steuerelement, das zum ContentPlaceHolder1 auf der Masterseite gehört, Welcome to the Contoso Web Site ein.
Markieren Sie den Text, und formatieren Sie ihn als Überschrift, indem Sie oberhalb der Toolbox in der Dropdownliste Blockformat den Eintrag Überschrift 1 auswählen.
Drücken Sie die EINGABETASTE, um im Content-Steuerelement eine neue Leerzeile zu erstellen, und geben Sie dann Thank you for visiting our site. ein.
Welchen Text Sie hier einfügen, ist unerheblich. Sie können einen beliebigen Text eingeben, der Ihnen hilft, diese Seite als Homepage zu erkennen.
Speichern Sie die Seite.
Die About-Seite (Infoseite) erstellen Sie auf die gleiche Weise wie die Homepage.
So erstellen Sie die About-Seite (Infoseite)
Führen Sie dieselben Schritte wie beim Erstellen der Homepage aus, um eine neue Inhaltsseite mit dem Namen About.aspx hinzuzufügen.
Vergewissern Sie sich, dass Sie die neue Seite der Seite Master1.master hinzugefügt haben, wie Sie dies bereits bei der Homepage getan haben.
Ändern Sie den Titel der Seite in Contoso About Page.
Geben Sie im Inhaltsbereich About Contoso ein, und formatieren Sie den Text als Überschrift 1, indem Sie den Text markieren und in der Dropdownliste Blockformat über der Toolbox den Eintrag Überschrift 1 auswählen.
Drücken Sie die EINGABETASTE, um eine neue Zeile zu erstellen, und geben Sie dann Since 1982, Contoso has provided high-quality software services. ein.
Speichern Sie die Seite.
Testen der Seiten
Sie können die Seiten testen, indem Sie sie wie jede andere ASP.NET-Seite ausführen.
So testen Sie die Seiten
Wechseln Sie zur Seite Home.aspx, und drücken Sie dann STRG+F5.
ASP.NET führt den Inhalt der Seite Home.aspx mit dem Layout der Seite Master1.master in einer einzigen Seite zusammen und zeigt die sich ergebende Seite im Browser an. Beachten Sie, dass die URL der Seite Home.aspx lautet. Deshalb ist im Browser kein Verweis auf die Masterseite vorhanden.
Klicken Sie auf den Link About.
Die Seite About.aspx wird angezeigt. Sie wird ebenfalls mit der Seite Master1.master zusammengeführt.
Verweisen auf Masterseitenmember
Der Code auf den Inhaltsseiten kann auf Member der Masterseite verweisen, einschließlich öffentlicher Eigenschaften oder öffentlicher Methoden sowie beliebiger Steuerelemente auf der Masterseite. In diesem Teil der exemplarischen Vorgehensweise erstellen Sie eine Eigenschaft auf der Masterseite und verwenden anschließend den Wert der Eigenschaft auf den Inhaltsseiten. Voraussetzung ist, dass der Firmenname für die Website als Eigenschaft auf der Masterseite gespeichert ist. Jeder Verweis auf den Firmennamen auf den Inhaltsseiten basiert auf der Eigenschaft der Masterseite.
Der erste Schritt besteht darin, der Masterseite eine Eigenschaft hinzuzufügen.
So fügen Sie der Masterseite eine Eigenschaft hinzu
Wechseln Sie zur Seite Master1.master, oder öffnen Sie diese.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Master1.master, und klicken Sie dann auf Code anzeigen, um den Code-Editor zu öffnen.
Hinweis: Standardmäßig erstellt Visual Web Developer Seiten nach dem Code-Behind-Modell. Sie können aber auch Code erstellen, indem Sie das Einzeldateimodell verwenden, wenn Sie dies bevorzugen. Weitere Informationen finden Sie unter Codemodell für ASP.NET-Webseiten.
Geben Sie in der Klassendefinition den folgenden Code ein.
Public Property CompanyName() As String Get Return CType(ViewState("companyName"), String) End Get Set(ByVal Value As String) ViewState("companyName") = Value End Set End Property
public String CompanyName { get { return (String) ViewState["companyName"]; } set { ViewState["companyName"] = value; } }
Im Code wird für die Masterseite eine Eigenschaft mit dem Namen CompanyName erstellt. Der Wert wird im Ansichtszustand gespeichert, damit er zwischen Postbacks beibehalten wird.
Fügen Sie in der Klassendefinition (aber nicht im Eigenschaftencode) den folgenden Code hinzu.
Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs) _ Handles Me.Init Me.CompanyName = "Contoso" End Sub
void Page_Init(Object sender, EventArgs e) { this.CompanyName = "Contoso"; }
Bei diesem Beispiel wird der Wert der CompanyName-Eigenschaft auf der Seite fest programmiert.
Sie können die Inhaltsseite nun so ändern, dass die CompanyName-Eigenschaft der Masterseite verwendet wird.
So verweisen Sie auf die CompanyName-Eigenschaft auf der Inhaltsseite
Wechseln Sie zur Seite Home.aspx, oder öffnen Sie diese.
Wechseln Sie zur Quellansicht.
Fügen Sie im oberen Bereich der Seite unter der @ Page-Direktive die folgende @ MasterType-Direktive hinzu:
<%@ MasterType virtualpath="~/Master1.master" %>
Die Direktive bindet die Master-Eigenschaft der Inhaltsseite, die Sie weiter unten verwenden, an die Seite Master1.master.
Wechseln Sie in die Entwurfsansicht.
Ändern Sie im Content-Steuerelement den Text in Welcome to the Web site of.
Ziehen Sie in der Toolbox aus der Gruppe Standard ein Label-Steuerelement auf das Content-Steuerelement, und platzieren Sie es hinter dem statischen Text, sodass der Text lautet:
Welcome to the Web site of [Label]
Legen Sie die ID-Eigenschaft des Label-Steuerelements auf CompanyName fest.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Home.aspx, und klicken Sie dann auf Code anzeigen, um den Code-Editor zu öffnen.
Fügen Sie in der Klassendefinition den folgenden Code hinzu.
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) _ Handles Me.Load CompanyName.Text = Master.CompanyName End Sub
void Page_Load(Object sender, EventArgs e) { CompanyName.Text = Master.CompanyName; }
Die Master-Eigenschaft der Inhaltsseite gibt einen, der in Schritt 3 hinzugefügten @ MasterType-Direktive entsprechenden, Verweis auf die Masterseite zurück.
Jetzt können Sie die Inhaltsseite testen, um sich zu vergewissern, dass sie korrekt auf die CompanyName-Eigenschaft der Masterseite verweist.
So testen Sie den Verweis auf die Masterseiteneigenschaft
Wechseln Sie zur Seite Home.aspx, oder öffnen Sie diese, und drücken Sie dann STRG+F5, um die Seite auszuführen.
Die Seite wird im Browser mit dem Text Welcome to the Web site of Contoso angezeigt.
Schließen Sie den Browser.
Wechseln Sie zu der Code-Behind-Seite Master1.master, oder öffnen Sie diese.
Ändern Sie den Page_Init-Handler, um der Eigenschaft wie im folgenden Codebeispiel einen anderen Firmennamen zuzuweisen.
Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs) _ Handles Me.Init Me.CompanyName = "New Company Name" End Sub
void Page_Init(Object sender, EventArgs e) { this.CompanyName = "New Company Name"; }
Wechseln Sie zur Seite Home.aspx, und drücken Sie dann STRG+F5, um sie erneut auszuführen.
Dieses Mal wird der aktualisierte Firmenname auf der Seite angezeigt.
Dynamisches Ändern von Masterseiten
In bestimmten Fällen können Sie Masterseiten dynamisch ändern, d. h. mithilfe von Code die Masterseite für eine Inhaltsseite festlegen. Sie könnten beispielsweise den Benutzern die Auswahl aus mehreren Layouts überlassen und entsprechend der von den Benutzern getroffenen Auswahl die Masterseite festlegen.
In diesem Teil der exemplarischen Vorgehensweise fügen Sie der Website eine zweite Masterseite hinzu und erstellen anschließend Schaltflächen, mit deren Hilfe der Benutzer zwischen den Masterseiten wechseln kann. Da sich die beiden Masterseiten sehr ähneln, erstellen Sie eine Kopie der ersten Masterseite, und ändern Sie diese entsprechend, damit sie als zweite Masterseite fungieren kann.
So erstellen Sie eine Kopie der Masterseite
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Master1.master, und klicken Sie dann auf Kopieren.
Klicken Sie mit der rechten Maustaste auf den Namen der Website und anschließend auf Einfügen.
Der Website mit dem Namen Kopie von Master1.master wird eine Masterseite hinzugefügt.
Klicken Sie mit der rechten Maustaste auf Kopieren von Master1.master, klicken Sie auf Umbenennen, und benennen Sie die neue Masterseite mit Master2.master.
Öffnen Sie Master2.master, und ändern Sie in der @ Master-Direktive Master1 in Master2.
Die vervollständigte Seitendirektive sieht wie im folgenden Codebeispiel dargestellt aus:
<%@ Master Language="VB" CodeFile="Master2.master.vb" Inherits="Master2" %>
<%@ Master Language="C#" CodeFile="Master2.master.cs" Inherits="Master2" %>
Wechseln Sie in die Entwurfsansicht.
Klicken Sie im Eigenschaftenfenster oben in der Dropdownliste auf Dokument.
Löschen Sie die BgColor-Eigenschaft.
Die neue Masterseite funktioniert genauso wie Master1.master und hat dasselbe Erscheinungsbild, weist aber keine Hintergrundfarbe auf.
Öffnen Sie die Codedatei für Master2.master, und ändern Sie den Klassennamen in der Code-Behind-Datei der Masterseite von Master1 in Master2, damit er dem Wert des Inherits-Attributs in der @ Master-Direktive der Seite entspricht.
Der Code sieht wie im folgenden Beispiel dargestellt aus:
Partial Class Master2
public partial class Master2 : System.Web.UI.MasterPage
Im nächsten Schritt fügen Sie jeder Masterseite eine Schaltfläche hinzu, mit der der Benutzer eine andere Masterseite auswählen kann.
So fügen Sie Schaltflächen zum Auswählen einer alternativen Masterseite hinzu
Wechseln Sie zur Seite Master2.master, oder öffnen Sie diese.
Ziehen Sie in der Toolbox aus dem Knoten Standard ein LinkButton-Steuerelement auf die Seite, und platzieren Sie es unter dem Menü in der obersten Tabellenzelle.
Legen Sie die Text-Eigenschaft der Schaltfläche auf Colorful fest.
Doppelklicken Sie auf die Schaltfläche, um einen Handler für das Click-Ereignis der Schaltfläche zu erstellen, und fügen Sie dann den hervorgehobenen Code hinzu.
Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As EventArgs)_ Handles LinkButton1.Click Session("masterpage") = "Master1.master" Response.Redirect(Request.Url.ToString()) End Sub
[C#]
void LinkButton1_Click(Object sender, EventArgs e) { Session["masterpage"] = "Master1.master"; Response.Redirect(Request.Url.ToString()); }
Der Code lädt den Dateinamen der alternativen Masterseite in eine permanente Sitzungsvariable und entlädt dann die aktuelle Seite. (Die Url-Eigenschaft gibt ein Uri-Objekt zurück, das auf die aktuelle Seite verweist.) Kurz gesagt, Sie erstellen Code auf der Inhaltsseite, in dem der Name der Masterseite verwendet wird.
Wechseln Sie zur Seite Master1.master, oder öffnen Sie diese in der Entwurfsansicht.
Fügen Sie ein LinkButton-Steuerelement wie in den Schritten 1 und 2 beschrieben hinzu, und legen Sie dessen Text-Eigenschaft auf Plain fest.
Doppelklicken Sie auf die Schaltfläche Plain, um einen Handler für das Click-Ereignis der Schaltfläche zu erstellen, und fügen Sie dann den hervorgehobenen Code hinzu.
Protected Sub LinkButton1_Click(ByVal sender As Object, ByVal e As EventArgs)_ Handles LinkButton1.Click Session("masterpage") = "Master2.master" Response.Redirect(Request.Url.ToString()) End Sub
void LinkButton1_Click(Object sender, EventArgs e) { Session["masterpage"] = "Master2.master"; Response.Redirect(Request.Url.ToString()); }
Dieser Code ist mit dem für die Schaltfläche auf der Seite Master2.master identisch, nur wird damit eine alternative Masterseite geladen.
Nun schreiben Sie den Code auf der Inhaltsseite, der die vom Benutzer ausgewählte Masterseite dynamisch lädt.
So schreiben Sie Code, um die Masterseite dynamisch auszuwählen
Wechseln Sie zur Seite About.aspx, oder öffnen Sie sie.
Hinweis: Die von Ihnen bereits erstellte Homepage enthält eine @ MasterType-Direktive, die sie gewissermaßen an eine einzelne Masterseite (Master1.master) bindet. Daher können Sie der Homepage Masterseiten nicht dynamisch zuweisen und arbeiten stattdessen mit anderen von Ihnen erstellten Seiten.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf About.aspx, und klicken Sie dann auf Code anzeigen, um den Code-Editor zu öffnen.
Fügen Sie in der Klassendefinition den folgenden Code hinzu.
Sub Page_PreInit(ByVal sender As Object, ByVal e As EventArgs) _ Handles Me.PreInit If Not Session("masterpage") Is Nothing Then Me.MasterPageFile = CType(Session("masterpage"), String) End If End Sub
void Page_PreInit(Object sender, EventArgs e) { if(Session["masterpage"] != null) { this.MasterPageFile = (String) Session["masterpage"]; } }
Mit diesem Code wird der Wert der MasterPageFile-Eigenschaft der aktuellen Seite auf den Wert in der Sitzungsvariablen festgelegt, falls vorhanden. Dieser Code muss im Page_PreInit-Handler ausgeführt werden. Er darf nicht im Handler eines Ereignisses ausgeführt werden, das nach dem Page_PreInit-Ereignis eintritt (z. B. nicht im Page_Init-Handler), weil die Masterseite so eingerichtet sein muss, dass die Seite eine Instanz davon erstellen kann, bevor eine weitere Initialisierung erfolgen kann.
Sie können nun die dynamischen Masterseiten testen.
So testen Sie die dynamischen Masterseiten
Drücken Sie auf der Seite About.aspx die Tasten STRG+F5, um die Seite auszuführen.
Die Seite wird mit ihrer Standardmasterseite Master1.master zusammengeführt und im Browser angezeigt.
Klicken Sie auf den Link Plain.
Die Seite wird erneut angezeigt, dieses Mal jedoch mit der Seite Master2.master zusammengeführt, die keine Hintergrundfarbe aufweist.
Klicken Sie auf den Link Colorful.
Die Seite wird wieder mit Master1.master angezeigt.
Hinweise zum Verwenden von Masterseiten
Es gibt mehrere andere Punkte, die Sie bei Verwendung einer Masterseite beachten müssen:
In einer realen Anwendung würden Sie die Informationen, z. B. den Firmennamen, vermutlich in der Konfigurationsdatei speichern und direkt in die Inhaltsseiten einlesen. Das hier beschriebene Szenario veranschaulicht jedoch vereinfacht, wie auf Masterseitenmember auf Inhaltsseiten verwiesen wird.
Sie können sogar auf Member auf der Masterseite zugreifen, ohne eine @ MasterType-Direktive einzufügen. Hierfür müssen Sie jedoch die Page.Master-Eigenschaft in einen entsprechenden Masterseitentyp umwandeln (die Master-Eigenschaft ist null, wenn eine Seite nicht über eine Masterseite verfügt). Weitere Informationen hierzu finden Sie unter Programmgesteuertes Verwenden von ASP.NET-Masterseiten.
Sie können auf Steuerelemente auf der Masterseite mithilfe der Master.FindControls-Methode verweisen. Weitere Informationen hierzu finden Sie unter Programmgesteuertes Verwenden von ASP.NET-Masterseiten.
Es gibt mehrere andere Punkte, die Sie bei Verwendung dynamischer Masterseiten beachten müssen:
Das Szenario in diesem Abschnitt zum Ändern von Masterseiten ist vereinfacht, da es in dieser exemplarischen Vorgehensweise vorrangig um Masterseiten geht. In einer realen Anwendung würden Sie höchstwahrscheinlich eine Auswahl von Layouts anzeigen und dann die vom Benutzer getroffene Auswahl in Profilen speichern. Weitere Informationen finden Sie unter Übersicht über ASP.NET-Profileigenschaften.
Sie können die Website so konfigurieren, dass für alle Seiten dieselbe Masterseite verwendet wird. Gegebenenfalls soll für einige wenige Seiten eine alternative Masterseite verwendet werden. Dies kann im Code auf ähnliche Weise konfiguriert werden wie in diesem Abschnitt der exemplarischen Vorgehensweise beschrieben. Ausführliche Informationen finden Sie unter "Festlegen des Gültigkeitsbereichs von Masterseiten" in Übersicht über ASP.NET-Masterseiten.
Sie müssen jeder Seite, auf der die Standardmasterseite überschrieben werden soll, den Code von der Seite Home.aspx hinzufügen.
Nächste Schritte
In dieser exemplarischen Vorgehensweise werden die grundlegenden Funktionen von Masterseiten dargestellt. Sie möchten z. B. weitere Features von Masterseiten testen. Auf diese Weise können Sie beispielsweise folgende Vorgänge durchführen:
Erstellen Sie Masterseiten, die mehrere Inhaltsplatzhalter aufweisen. Sie können dann für jede anzuzeigende Seite einen oder mehrere Platzhalter mit Inhalt ausfüllen.
Definieren Sie Inhaltsplatzhalter mit Standardinhalt. Wenn auf einer ASP.NET-Seite kein Inhalt für den Platzhalter bereitgestellt wird, wird auf der Masterseite der Standardinhalt angezeigt.
Greifen Sie von den Inhaltsseiten aus programmgesteuert auf Member der Masterseite zu. Auf diese Weise können Sie das Erscheinungsbild der Masterseite zur Laufzeit dynamisch ändern. Weitere Informationen finden Sie unter Gewusst wie: Verweisen auf Inhalte der ASP.NET-Masterseite.
Verwenden Sie bei den Masterseiten die Gerätefilterung, um für verschiedene Geräte unterschiedliche Layouts zu erstellen, z. B. ein Layout für Browser und ein anderes Layout für einen bestimmten Telefontyp. Ausführliche Informationen finden Sie unter Übersicht über die Gerätefilterung in ASP.NET.
Informieren Sie sich, wie Sie Masterseiten in Masterseiten einfügen können, um komponentenbezogenen Code zu schreiben. Weitere Informationen finden Sie unter Geschachtelte ASP.NET-Masterseiten.