2010-10-15 3 views
0

Pouvez-vous mettre un bloc de style CSS (par exemple <style type="text/css">...</style>) sur une page ascx, afin de styliser le contrôle de l'utilisateur? Je l'ai essayé et il fonctionne. Cependant, je me demande si c'est une pratique courante et le problème est que le bloc de style est inséré dans le code HTML final là où le contrôle utilisateur est supposé être. Ma compréhension est les blocs de style devraient être entre les balises <head></head> à l'avant. Donc, il semble être hors de propos. BTW peut javascripts être mis n'importe où sur le HTML?Un contrôle utilisateur peut-il avoir ses propres styles CSS intégrés dans le contrôle utilisateur?

Répondre

1

Les balises Javascript peuvent être placées n'importe où. La tête coutures comme l'endroit logique pour le mettre, mais certaines personnes recommandent de le placer tout en bas juste avant </body>. De cette façon, le contenu de votre page devrait se charger plus rapidement et pourrait améliorer le référencement.

Les feuilles de style doivent absolument être placées dans le <head> car c'est une recommandation du W3C. Lorsque vous utilisez des feuilles de style, prenez le conseil de Tim de les glisser dans la tête, ou mieux, utilisez simplement un fichier .css externe.

2

Si vous avez runat = "server" dans votre balise head, vous pouvez y ajouter dynamiquement les tages CSS ou Script.

Dim lt as New Literal() 
lt.Text = "<style type='text/css'>styles......</style>" 
Page.Header.Controls.Add(lt) 

lt = New Literal() 
lt.Text = "<script type='text/javascript'>scripts.....</script>" 
Page.Header.Controls.Add(lt) 
0

Oui, étiquette <style> et <script> balise peut être insérer partout en html. Il ne doit pas nécessairement être <head></head>. Prenez note que le navigateur charge html de haut en bas. Si vous spécifiez la classe css pour un contrôle particulier dans votre code HTML avant en déclarant <style> référence, vous risquez de ne pas obtenir l'effet de style souhaité. Même chose pour <script>.

0

Utilisez ces méthodes d'aide que je stocker dans une classe HtmlHelper globalement accessible comme méthode statique:

/// <summary>Register a CSS block in HEAD</summary> 
/// <param name="page">A reference to the current Page instance (usually this.Page from a page or control)</param> 
/// <param name="id">An ID used to track if this style block has been added before or not. Must be a unique ID in the HTML</param> 
/// <param name="cssText">The CSS text</param> 
public static void RegisterCSSBlock(System.Web.UI.Page page, string id, string cssText) 
{ 
    if (page != null && page.FindControl(id) == null) 
    { 
     HtmlGenericControl css = new HtmlGenericControl(); 
     css.ID = id; 
     css.TagName = "style"; 
     css.Attributes.Add("type", "text/css"); 
     css.Controls.Add(new LiteralControl(cssText)); 
     page.Header.Controls.Add(css); 
    } 
} 

Ceci est facilement adapté pour les fichiers CSS (plutôt que le code). Vous n'avez pas besoin de l'adapter pour JavaScript car les méthodes ClientScriptManager intégrées le gèrent déjà bien.

Questions connexes