Ajouter une CSS dans une page avec une MasterPage
Par Djeepy1 le jeudi 28 juin 2007, 22:17 - ASP.NET - Lien permanent
Quand on utilise les MasterPages, il devient impossible d'ajouter un lien
vers une feuille de style directement dans une page. En effet, on ne peut
mettre la référence à la CSS que dans la
section <head/> et
les <asp:Content> des pages enfants doivent se trouver
obligatoirement dans le <body/> (la <form/> plus
exactement).
On a tout de même accès à la section <head/> depuis
le code pour ajouter manuellement un lien vers une CSS avec un contrôle de type
HtmlLink.
HtmlLink cssLink = new HtmlLink();
cssLink.Href = "../mapage.css";
cssLink.Attributes.Add("rel", "stylesheet");
cssLink.Attributes.Add("type", "text/css");
Page.Header.Controls.Add(cssLink);
Afin de rendre cette utilisation plus souple, on peut encapsuler ce code dans un contrôle afin de l'ajouter graphiquement dans le designer de page :
public class StyleSheetLink : Control
{
private string _href;
[UrlProperty]
public string Href
{
get { return _href; }
set { _href = value; }
}
protected override void OnPreRender(EventArgs e)
{
HtmlLink cssLink = new HtmlLink();
cssLink.Href = _href;
cssLink.Attributes.Add("rel", "stylesheet");
cssLink.Attributes.Add("type", "text/css");
Page.Header.Controls.Add(cssLink);
}
<Bewise:StyleSheetLink ID="css"
runat="server" Href="~/_css/default.css" />
Pour améliorer ce contrôle, on pourrait ajouter une vérification dans la liste des contrôles du header pour savoir si la CSS n'est pas déjà référencée.




