J'ai ce contrôle
<asp:Label ID="lblName" runat="server" Text="My Name" CssClass="required regular" />
Je veux supprimer la classe required
du code derrière, comment faire?
Vous pouvez remplacer "requis" par une chaîne vide:
lblName.CssClass = lblName.CssClass.Replace("required", "");
Juste une façon légèrement plus générique de faire la même chose - devrait exclure les erreurs potentielles où une classe css pourrait se produire ailleurs dans la propriété CssClass.
public void RemoveCssClass(WebControl controlInstance, String css)
{
controlInstance.CssClass = String.Join(" ", controlInstance.CssClass.Split(' ').Where(x => x != css).ToArray());
}
Cela a fonctionné pour moi
lblName.CssClass = "regular";
Utilisez ceci:
object.CssClass= object.CssClass.Replace("MyClass", "");
lblName.Attributes.Add("class","urclassname"); //add class to lblName
Voici mon code inspiré de l'exemple de code de @ KevD.
public static class WebControlExtension
{
public static void RemoveCssClass(this WebControl controlInstance, String css)
{
controlInstance.CssClass = String.Join(" ", controlInstance.CssClass.Split(' ').Where(x => x != css).ToArray());
}
public static void AddCssClass(this WebControl controlInstance, String css)
{
controlInstance.CssClass = String.Join($" {css} ", controlInstance.CssClass.Split(' ').ToArray());
}
}
Pour supprimer la classe CSS du code derrière
lblName.Attributes["class"]=" ";
REMARQUE: que vous ajoutiez ou remplaciez une classe css dans codeBehind, n'oubliez pas d'inclure des attributs équivalents dans les deux classes, c'est-à-dire ayant les deux couleur d'arrière-plan, famille de polices ... etc. car sinon, vous pourriez être dupe de penser que la classe n'a jamais changé, même si elle n'a pas mis à jour les attributs équivalents.