Wie set-Seite den Titel von einem web-content-Seite ASP.NET 3.5
Ich gelesen habe, durch einiges an Beiträgen/Artikeln auf, wie dies zu tun und ich bin immer noch nicht immer der Titel der Seite festgelegt, von der content-Seite. Meine Seiten Rendern OK, außer ich kann nicht die Titel aus der content-Seite (die ganze Seite haben Titel wie pro die master-Seite). Hier ist der codebehind für meine master-page:
Partial Class zSEO
Inherits System.Web.UI.MasterPage
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Page.Header.Title = "Dynamically set in Master page"
End Sub
End Class
Hier ist der rest von der master-Seite:
<%@ Master Language="VB"
EnableTheming="true"
Inherits="zSEO"
CodeFile="zSEO.master.vb" %>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div id="container">
<div id="content">
<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
</asp:contentplaceholder>
</div>
</div>
</form>
</body>
</html>
Doch, es ist in das web-content-Seite, die ich aufbauen möchten, den Wert der für die Seite und ich habe diese in meinem Test Inhalt Seite:
Public Partial Class zShowAd
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Page.Header.Title = "Dynamically set TITLE value in the content(child) page"
End Sub
End Class
Seltsam, ich Schaffe es nicht den debugger zu stoppen auf der Zeile oben in der content-Seite - nur auf die entsprechende Zeile in der master-Seite. Klar, ich bin verwirrt, auf dieser.
Ich gelesen habe gibt es andere Möglichkeiten, dies zu tun, aber dies schien möglich zu sein, von was ich gelesen habe bei Scott Mitchell ' s tutorial an: Dynamisches festlegen der Seitentitel in ASP.NET. Speziell, ich versuchte zu Folgen, dies aus dem Artikel:
"Darüber hinaus, wenn Sie die master-Seiten, kann dieser code funktionieren, wie geschrieben, entweder von der master-Seite oder die ASP.NET Seite mit der master-Seite. In einem solchen Szenario wird die region definiert werden sollte, in der master-Seite, aber die ASP.NET Seite kann noch darauf zugreifen, über die Seite.Header. "
Du musst angemeldet sein, um einen Kommentar abzugeben.
So, was geschehen muss, ist diese
MasterPage.Master
Standard.aspx
Diese Weise Ihre master-page Titel gesetzt wird, BEVOR Ihr Inhalt Seite Titel. Wenn Sie nicht ein Titel aus dem Inhalt Seite der masterpage wird die Standard-Titel. Wenn Sie einen Titel aus der content-Seite, dann wird es überschrieben.
Das problem ist, dass Sie die Page_Load-Methode in der Seite ausgeführt wird, bevor Sie die Page_Load-Methode in den user controls in die Seite, und ein master-Seite ist eigentlich eine Benutzer-Steuerelement.
Können Sie die Page_Init-Methode in der master-Seite statt.
Haben Sie daran zu erinnern, dass die MasterPage ist ein untergeordnetes Steuerelement auf der Seite, so dass die
OnLoad
event feuert nach der SeiteOnLoad
Veranstaltung.In Ihrem Szenario/Beispiel, die Seite würde den Titel, dann die masterpage würde es danach auch wieder. Entweder später im Lebenszyklus oder wickeln Sie etwas mehr Logik um, legt es vielleicht?
Scott Allen einen guten Artikel auf dieser Master-Seite ist speziell, gib es eine schnelle Lesen, um ein Gefühl für die lifecycle-Bestellung.
Ich hatte dieses problem auch.
Ich kann nicht Bearbeiten Sie die master-Datei (zu viele mögliche Nebenwirkungen), also habe ich die Seiten PreRender () - Methode, die feuert nach die master-Seiten Page_Load()
einfachere Lösung in der Master-Seite <%: Seite.Titel %> - die wichtigsten Titel geht hier
in Inhalt Seite erste Zeile <%@ Page Title="Dein Titel" Language="C#" MasterPageFile="~/_masterpages/... etc
andere Lösung, die ich manchmal verwendet, ist an einen contentplaceholder zwischen den Titel-tags auf der master-Seite, dann könnten Sie ein label-Steuerelement im content-tag und lassen es zu, dass.
diese Weise können Sie der Seite einen Titel nach Kontrollen gebucht haben zurück, zum Beispiel.
kombinieren Seite Titel mit Ihrem Standard-MasterPage Titel Sie können die standard-Vorlage, die Standard-ASP.NET web app-Vorlage verwendet.
diesem Wege dieser Seite.Titel Lesen bilden einzelne Seiten