Les contrôles ordinaires ne peuvent pas être utilisés dans la zone d'en-tête d'une page Web, mais ils sont parfois très importants, comme le titre, les mots-clés et la description, qui peuvent être différents sur chaque page. Alors, comment pouvons-nous les définir dynamiquement en fonction de la page Web. contenu?
Méthode 1 : ce que asp peut faire, bien sûr, asp.net peut le faire. Tant que vous écrivez la page entière en utilisant Response.Write(), il n'y a rien qui ne puisse être personnalisé. Bien sûr, vous pouvez également "<%=a. certain membre%" >". Mais évidemment, cela ne peut pas profiter des caractéristiques du .net.
Méthode 2 : utilisez l'attribut unique d'asp.net : runat="server", définissez un identifiant pour le titre, puis faites-en une variable de serveur, vous pourrez ensuite définir son texte. Mais le code HTML qui sort ainsi contiendra également un identifiant, ce qui est vraiment désagréable à regarder.
Méthode 3 : Utiliser le contrôle littéral, réception :
De plus, ma page utilise beaucoup de contrôles utilisateur, et ces contrôles utilisateur ont des niveaux. Le titre de la page peut être déterminé par un contrôle sous-utilisateur dans un contrôle utilisateur, et le niveau d'imbrication des contrôles utilisateur n'est pas fixe. Alors comment le paramétrer dynamiquement ?
Sur la page d'accueil, créez une classe de base de contrôle utilisateur et ajoutez-y une méthode publique :
public void SetTitle(string title)
{
SetLiteralText("lt_title", string.Format("
ctrl
!= null && ctrl.GetType().FullName != "System.Web.UI.HtmlControls.HtmlForm" );
{
lt = ctrl.FindControl(id) comme littéral ;
si(lt != nul)
lt.Text = texte ;
}
}
De cette façon, votre contrôle utilisateur n'a besoin que d'hériter de cette classe de base, puis d'appeler base.SetTitle("title") lorsque vous souhaitez définir le titre de la page, et la tâche est simplement terminée. Pour les autres balises de la zone head, le principe est le même que pour définir le titre.