2010-04-14 2 views

Répondre

17

Voici comment normalement ajouter un CSS programatically:

protected void Page_Init(object sender, EventArgs e) 
{ 
    var link = new HtmlLink(); 
    link.Href = "~/styles/main.css"; 
    link.Attributes.Add("rel", "stylesheet"); 
    link.Attributes.Add("type", "text/css"); 
    Page.Header.Controls.Add(link); 
} 

Vous pourriez avoir besoin de mettre un runat="server" dans la balise head:

<head runat="server"> 
    <title>Add CSS example</title> 
</head> 
+0

J'ai compris. Il me manquait le Runat = "Server" dans la balise d'en-tête de ma masterpage. :) Merci! –

+1

Ce ne serait pas un problème si vous avez ajouté le contrôle, disons, 10 fois sur votre page? Ensuite, le fichier CSS serait lié 10 fois. – Peter

+0

@Peter, oui je suppose que ce serait problématique. –

7

Pour éviter le problème de plusieurs feuilles de style lors de l'ajout du contrôler 10 fois à la page, changer légèrement le code ci-dessus:

string styleSheet = "stylesheetName.css"; 
if (this.Page.Header.FindControl(styleSheet) == null) 
{ 
    HtmlLink cssLink = new HtmlLink(); 
    cssLink.ID = styleSheet; 
    cssLink.Href = "~/styles/" + styleSheet; 
    cssLink.Attributes.Add("rel", "stylesheet"); 
    cssLink.Attributes.Add("type", "text/css"); 
    this.Page.Header.Controls.Add(cssLink); 
} 

En donnant un ID au contrôle, vous pouvez vérifier s'il existe déjà, et donc assurez-vous de ne l'ajouter qu'une seule fois.