comment append la classe css au code HTML générique de contrôle?

J’ai créé une balise div comme ceci:

System.Web.UI.HtmlControls.HtmlGenericControl dynDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV"); 

J’ai ajouté du style à la balise div comme ceci:

 dynDiv.Style.Add(HtmlTextWriterStyle.BorderStyle, "1px solid #DBE0E4"); dynDiv.Style.Add(HtmlTextWriterStyle.Height, "auto"); dynDiv.Style.Add(HtmlTextWriterStyle.MarginTop, "5px"); dynDiv.Style.Add(HtmlTextWriterStyle.PaddingBottom, "5px"); dynDiv.Style.Add(HtmlTextWriterStyle.Width, "682px"); 

Mais je dois contrôler le style de la balise div via un fichier css externe situé dans le dossier ~/css/maincss.css .

Comment puis-je appliquer le css dans ce fichier à cette div?

 dynDiv.Atsortingbutes["class"] = "myCssClass"; 

Pour append une classe à un div qui est généré via le moyen HtmlGenericControl , vous pouvez utiliser:

 div1.Atsortingbutes.Add("class", "classname"); 

Si vous utilisez l’option Panel , ce serait:

 panel1.CssClass = "classname"; 

Si vous souhaitez append une classe à une liste existante de classes pour un élément:

 element.Atsortingbutes.Add("class", element.Atsortingbutes["class"] + " " + sType); 

Mon approche serait:

 ///  /// Appends CSS Class seprated by a space character ///  /// Target control /// CSS class name to append public static void AppendCss(HtmlGenericControl control, ssortingng cssClass) { // Ensure CSS class is definied if (ssortingng.IsNullOrEmpty(cssClass)) return; // Append CSS class if (ssortingng.IsNullOrEmpty(control.Atsortingbutes["class"])) { // Set our CSS Class as only one control.Atsortingbutes["class"] = cssClass; } else { // Append new CSS class with space as seprator control.Atsortingbutes["class"] += (" " + cssClass); } } 

Je pense que la réponse de Curt est correcte, mais si vous voulez append une classe à un div qui a déjà une classe déclarée dans le code ASP.NET.

Voici ma solution pour cela, c’est une méthode générique pour que vous puissiez l’appeler directement comme ceci:

Déclaration Asp Net Div:

 

Code pour append une classe:

 divButtonWrapper.AddClassToHtmlControl("nameOfYourCssClass") 

Classe générique:

 public static class HtmlGenericControlExtensions { public static void AddClassToHtmlControl(this HtmlGenericControl htmlGenericControl, ssortingng className) { if (ssortingng.IsNullOrWhiteSpace(className)) return; htmlGenericControl .Atsortingbutes.Add("class", ssortingng.Join(" ", htmlGenericControl .Atsortingbutes["class"] .Split(' ') .Except(new[] { "", className }) .Concat(new[] { className }) .ToArray())); } } 

Si vous répétez cela, autant utiliser une méthode d’extension:

 // appends a ssortingng class to the html controls class atsortingbute public static void AddClass(this HtmlControl control, ssortingng newClass) { if (control.Atsortingbutes["class"].IsNotNullAndNotEmpty()) { control.Atsortingbutes["class"] += " " + newClass; } else { control.Atsortingbutes["class"] = newClass; } } 

Vous n’ajoutez pas le fichier css au div, vous y ajoutez une classe puis placez votre importation en haut de la page HTML comme suit:

  

Ajoutez ensuite une classe comme celle-ci à votre code: «myStyle».

Ensuite, dans le fichier CSS, faites quelque chose comme:

 .myStyle { border-style: 1px solid #DBE0E4; } 

Qu’en est-il d’une méthode d’extension?

Ici, j’ai une méthode show ou hide. Utiliser ma classe CSS cachée

 public static class HtmlControlExtensions { public static void Hide(this HtmlControl ctrl) { if (!ssortingng.IsNullOrEmpty(ctrl.Atsortingbutes["class"])) { if (!ctrl.Atsortingbutes["class"].Contains("hidden")) ctrl.Atsortingbutes.Add("class", ctrl.Atsortingbutes["class"] + " hidden"); } else { ctrl.Atsortingbutes.Add("class", "hidden"); } } public static void Show(this HtmlControl ctrl) { if (!ssortingng.IsNullOrEmpty(ctrl.Atsortingbutes["class"])) if (ctrl.Atsortingbutes["class"].Contains("hidden")) ctrl.Atsortingbutes.Add("class", ctrl.Atsortingbutes["class"].Replace("hidden", "")); } } 

Ensuite, lorsque vous souhaitez afficher ou masquer votre contrôle:

 myUserControl.Hide(); //... some other code myUserControl.Show();