Dans les programmes ASP précédents, nous utilisions souvent Response.Write pour afficher dynamiquement les informations d'en-tête de page Web, mais dans ASP.NET, le soi-disant principe directeur de séparation du code et de l'interface utilisateur ne veut plus que nous fassions cela (bien sûr, si vous si vous le souhaitez, vous pouvez, ceci. Après tout, ce n'est qu'une suggestion). J'ai vu d'autres utiliser <title ranut="server" id="titleControl">Titre par défaut</title> pour définir le titre, mais je ne le fais pas. Je ne pense pas que c'est très bien car cela générera un id="titleControl" redondant. Personnellement, je pense qu'il est préférable d'utiliser le contrôle Literal, car il ne produit pas de caractère redondant :). , mais que demandez-vous au moteur de recherche de faire ? Il
est en fait très simple de contrôler dynamiquement les informations d'en-tête de la page. Regardez simplement d'abord la démo : http://www.lvjiyong.com/demo/aspnet/setheader/.
La démonstration est très simple. Vous pouvez télécharger le code source et regarder de plus près les annotations sont toutes là
et sont principalement utilisées.
La méthode est placée dans BasePage. La prochaine fois que vous laisserez WebForm hériter de la classe BasePage, vous pourrez l'appeler Use Literal pour définir les informations de titre pour charger la feuille de style et le script.
Literal nous permet de définir directement les informations textuelles. Lors de son utilisation, nous laissons d'abord le programme découvrir s'il existe un contrôle Literal spécifié, et si c'est le cas, définir le texte.
/**//// <résumé>
/// Définir les informations sur la tête
/// </summary>
/// <param name="_name">Contrôle</param>
/// <param name="_control">Texte</param>
private void setHeader (string _control, string _text)
{
Littéral obj = this.FindControl(_control) as Literal ;
si(obj != nul)
{
obj.Text = _text;
}
}
Par exemple, si nous définissons <asp:Literal id="PageTitle" runat="server" /> dans la zone Head, nous pouvons définir le titre comme ceci. Ici, nous préparons d'abord une méthode.
/**//// <résumé>
///Définir le titre de la page Web
/// </summary>
/// <param name="_title">Titre de la page Web</param>
protégé void SetTitle (string _title)
{
setHeader("TitrePage","<titre>" + _titre + "</titre>");
Dans WebFrom, nous pouvons définir le titre comme ceci
this.SetTitle("Le blog de Lu");
Les méthodes pour la description, les mots-clés, etc. sont les mêmes, mais vous devez définir Meta. Je n'entrerai pas dans les détails. Vous pouvez regarder le code source.
Cette fois, je vais parler du chargement de js et de css. nous utilisons le contrôle PlaceHolder. Pourquoi utiliser ceci au lieu de Literal ?
PlaceHolder n'occupe généralement qu'une position, ce qui nous facilite le chargement dynamique des contrôles. Cela rend le chargement de js et css beaucoup plus pratique. Tout d'abord, nous trouvons également le contrôle PlaceHolder spécifié.
/**//// <résumé>
/// Rechercher le conteneur PlaceHolder de LoadHeader
/// </summary>
/// <retours></retours>
Contrôle privé findHeader()
{
renvoie this.FindControl("LoadHeader");
}Puis ajoutez le contrôle dynamiquement
/**//// <résumé>
/// Charge le contrôle dans le contrôle PlaceHolder
/// </summary>
/// <param name="_obj"></param>
protégé vide LoadPlaceHolder (HtmlGenericControl _obj)
{
objHeader = findHeader() as Control ;
//Charger le fichier de script
si(objHeader != null)
{
objHeader.Controls.Add
(_obj);
}Pour charger CSS ou JS, nous utilisons d'abord HtmlGenericControl pour créer un contrôle enfant, puis nous l'ajoutons au contrôle PlaceHolder.
/**//// <résumé>
/// Charge le fichier de feuille de style spécifié
/// </summary>
/// <param name="_cssPath">Adresse du fichier de feuille de style</param>
protégé void LoadCss (string _cssPath)
{
HtmlGenericControl objCss = new HtmlGenericControl("lien");
objCss.Attributes["rel"] = "feuille de style";
objCss.Attributes["type"] = "texte/css";
objCss.Attributes["href"] = _cssPath;
objCss.Attributes["media"] = "écran";
this.LoadPlaceHolder(objCss);
}
Ensuite, lorsque l'on souhaite charger la feuille de style dans WebForm, il suffit d'utiliser
this.LoadCss("Style Sheet Address"); C'est la même chose que le chargement de js. Je n'en parlerai pas.
La fonction que j'ai écrite dans le code source est un peu meilleure que ce qui est mentionné ici. toi-même.