J'utilise asp.net. J'ai remarqué que nous pouvons configurer le titre de la page (statique et dynamique à la fois) de deux manières:
Nous avons un attribut Title
dans la directive page:
<%@ Page Language="C#" Inherits="_Default" Title="My Title" ......%>
Nous avons également <title>
tag dans la page:
<title runat="server" id="MyTitle"> My Title</title>
Les deux sont accessibles dans un fichier code-behind:
MyTitle.Text = "Title from Code behind";
Page.Title = "Page Title from CS";
Et j'ai trouvé que la directive de la page remplace le titre html. Alors, lequel devrions-nous utiliser et pourquoi?
La plus grande différence est qu'avec MyTitle.Text
vous devez décorer l'élément Title avec les attributs id
AND runat
, et n'oubliez pas son nom pour pouvoir le référencer. L'accès à cette valeur n'est pas aussi simple à partir des pages enfants lorsque vous utilisez Masterpage par exemple ..
D'autre part, Page.Title
est commun à toutes les pages, il est donc plus universel à mon avis. Chaque nouveau développeur avec qui vous travaillerez n'aura pas à apprendre quoi que ce soit de nouveau, utilisez simplement le format Page.Title.
Mon vote irait donc au "traditionnel" Page.Title
Peu importe ce que vous souhaitez utiliser, respectez-le, afin de ne pas mélanger différentes façons de définir le titre. De cette façon, vous n'aurez pas à vous soucier de l'événement qui se produira en premier ou de l'écrasement de vos valeurs par votre collègue.
Réponse courte: (cela dépend de vos besoins). je vais t'expliquer.
Longue réponse :
Voici mon observation (avec un petit test):
J'ai mis title
au Page directive
:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="Exampales_test" Title="ppppppppp" %>
J'ai également défini via html
:
<head runat="server" ID="hhh">
...
<title runat="server">fffffffff</title>
</head>
J'ai ce code de test:
protected override void OnPreInit(EventArgs e)
{
// <----- breakpoint here (A)
base.OnPreInit(e);
// <----- breakpoint here (B)
}
protected void Page_Load(object sender, EventArgs e)
{ // <----- breakpoint here (C)
this.Title = "cccccccc";
}
Visuel:
Voyons maintenant:
Lorsque j'appuie sur Run
:
La page a le titre html valeur (ffffff
)
Toujours à la fin de PreInit
L'étude de OnInit
montre qu'il a déjà changé (de la manière {si vous voulez savoir exactement à quelle étape - cela peut être fait }) à ppppppppp
Et bien sûr, le dernier événement (parmi ceux dont nous avons parlé) est le page_load
: ce qui change la valeur:
Et la valeur est:
Alors lequel choisir?
Si votre code modifie dynamiquement le Title
(je veux dire à runtime), n'utilisez pas du tout le balisage html ni la directive page.
par exemple. si votre code est (par exemple) a ASCX et que ACSX doit changer le titre, alors utilisez simplement le code (pas de directive ni de balisage html).
Comme vous l'avez déjà remarqué - la valeur qui gagne est celle qui se produit en dernier (chronologie)
Il commence par la valeur de balisage html, mais ensuite le code côté serveur commence à s'activer et change les valeurs.
Voici un bon article sur les différences. Ils font essentiellement la même chose. C'est juste CE QUE vous voulez faire qui compte.
Alors que
<title>
Peut être défini de manière statique dans une page Web ASP.NET, dans de nombreux scénarios, le titre dépend des données affichées dans la page. Par exemple, un site Web peut avoir une page ShowProduct.aspx? ID = productID. Plutôt que d'utiliser un<title>
Statique, la valeur du<title>
Serait idéalement le nom du produit visualisé (c'est-à-dire le produit dont le ProductID est égal à la valeur productID transmise par la chaîne de requête). Malheureusement, dans ASP.NET version 1.x, la définition de tous les éléments de métadonnées HTML (tels que<title>
) Exigeait que le développeur ajoute un contrôle Literal au bon endroit dans le balisage HTML, puis définisse sa valeur par programme dans le Classe code-behind de la page ASP.NET.
Copié d'ici http://www.4guysfromrolla.com/articles/051006-1.aspx