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();