Comment définir le Titre de la Page d'un site web page de contenu dans ASP.NET 3.5
J'ai lu pas mal de posts/articles sur la façon de le faire et je ne suis toujours pas arriver le titre de la page définie à partir de la page de contenu. Mon rendu des pages OK sauf que je ne peux pas obtenir le titre de la page de contenu (tous de la page de Titre par la page principale). Voici le code de ma page principale:
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
Voici le reste de la page maître:
<%@ 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>
Encore, il est dans le contenu web page que je veux établir la valeur de la pour la page et je l'ai placé dans mes tests de page de contenu:
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
Étrangement, je ne peux pas obtenir le débogueur s'arrête sur la ligne ci-dessus dans la page de contenu uniquement sur la ligne correspondante dans la page maître. Clairement, je suis confus sur ce.
J'ai lu il y a d'autres façons de procéder, mais il semble que ce soit possible à partir de ce que j'ai lu à Scott Mitchell tutoriel: La définition dynamique de la Page de Titre dans ASP.NET. Plus précisément, j'ai essayé de suivre ce à partir de l'article:
"En outre, si vous utilisez les pages maîtres, ce code peut fonctionner, comme l'écrit, soit à partir de la page principale ou la ASP.NET page qui utilise la page maître. Dans un tel scénario, la région doit être définie dans la page principale, mais l'ASP.NET page pouvez toujours y accéder via la Page.L'en-tête. "
OriginalL'auteur John Adams | 2010-02-19
Vous devez vous connecter pour publier un commentaire.
Donc ce qui doit arriver est ce
MasterPage.Maître
Par défaut.aspx
De cette façon, votre maître le titre de la page est définie AVANT votre contenu de page de titre. Si vous ne définissez pas un titre à partir de la page de contenu, la masterpage sera le titre par défaut. Si vous ne définissez un titre à partir de la page de contenu, puis il va le remplacer.
OriginalL'auteur Chase Florell
Le problème est que la méthode Page_Load dans l'exécution de la page avant de la méthode Page_Load de contrôle de l'utilisateur dans la page, et d'une maîtrise en page est en fait un contrôle de l'utilisateur.
Vous pouvez utiliser le Page_Init méthode dans la page principale, à la place.
OriginalL'auteur Guffa
Vous devez vous rappeler que la MasterPage est un enfant de contrôle de la Page, de sorte que le
OnLoad
événement se déclenche après de la PageOnLoad
événement.Dans votre scénario/exemple, la page définir le titre, puis la masterpage elle à nouveau par la suite. Soit fixé il plus tard dans le cycle de vie ou enveloppez de plus de la logique qui définit peut-être?
Scott Allen a un bon article sur ce Maître de la Page spécifiquement, donner une lecture rapide pour obtenir une sensation pour le cycle de vie de l'ordre.
OriginalL'auteur Nick Craver
J'ai eu ce problème aussi.
Je ne peux pas modifier le fichier maître (trop d'effets secondaires possibles), j'ai donc utilisé les pages pré-rendu() la méthode, qui se déclenche après les master pages Page_Load()
OriginalL'auteur nedlud
plus simple solution dans la page principale <%: Page.Title %> - le titre principal est ici
dans le contenu de la page, première ligne de ce <%@ Page Title="Votre Titre" Language="C#" MasterPageFile="~/_masterpages/... etc
OriginalL'auteur wael
une autre solution, j'ai utilisé parfois est de mettre un contentplaceholder dans entre les balises de titre dans la page principale, vous pouvez utiliser un contrôle label dans le contenu de la balise et de la rendre à qui.
de cette façon, vous pouvez donner un titre à la page, après les contrôles ont posté dos, par exemple.
OriginalL'auteur benpage
de combiner Page Titre avec votre Défaut MasterPage Titre vous pouvez utiliser le modèle standard par défaut ASP.NET web app modèle utilise.
cette manière, cette page.Le titre est de lire des pages
OriginalL'auteur Iman Abidi