I have this control
<asp:Label ID="lblName" runat="server" Text="My Name" CssClass="required regular" />
I want to remove the required class from code behind, how can I do that?
You can replace "required" with an empty string:
lblName.CssClass = lblName.CssClass.Replace("required", "");
"dialog authentication-dialog modal" and you remove the "dialog" class. Using the code from this answer you end up with " authentication- modal".lblName.CssClass = Regex.Replace(lblName.CssClass, @"(?<![\w-])dialog(?![\w-])", "");which uses look behind and look ahead to match word boundaries excluding hyphensJust a slightly more generic way of doing the same - should rule out potential errors where a css class might occur elsewhere in the CssClass property.
public void RemoveCssClass(WebControl controlInstance, String css)
{
controlInstance.CssClass = String.Join(" ", controlInstance.CssClass.Split(' ').Where(x => x != css).ToArray());
}
This worked for me
lblName.CssClass = "regular";
regular. It does not "remove" a particular CSS class, per se. It will not work for most people who need to simply remove a single, specific class from a CssClass list.Here is my code inspired by @KevD's code sample.
public static void RemoveCssClass(this HtmlGenericControl controlInstance, string css)
{
var strCssClass = controlInstance.Attributes["class"];
controlInstance.Attributes["class"] = string.Join(" ", strCssClass.Split(' ').Where(x => x != css).ToArray().Distinct());
}
public static void AddCssClass(this HtmlGenericControl controlInstance, string css)
{
var strCssClass = controlInstance.Attributes["class"];
var cssList = strCssClass.Split(' ').ToArray().Distinct();
cssList= cssList.Append(css);
controlInstance.Attributes["class"] = string.Join(" ", cssList);
}
/// <summary>
/// Add or remove specific css class
/// </summary>
/// <param name="controlInstance">Control to which css is to be added or remove</param>
/// <param name="css"> Css class name to be added</param>
/// <param name="bAddClass"> True to Add / false to remove</param>
public static void AddOrRemoveCssClass(this HtmlGenericControl controlInstance, string css, bool bAddClass)
{
if (bAddClass)
{
controlInstance.AddCssClass(css);
}
else
{
controlInstance.RemoveCssClass(css);
}
}
public static void RemoveCssClass(this WebControl controlInstance, string css)
{
controlInstance.CssClass = string.Join(" ", controlInstance.CssClass.Split(' ').Where(x => x != css).ToArray().Distinct());
}
public static void AddCssClass(this WebControl controlInstance, string css)
{
var cssList = controlInstance.CssClass.Split(' ').ToArray().Distinct();
cssList= cssList.Append(css);
controlInstance.CssClass = string.Join(" ", cssList);
}
/// <summary>
/// Add or remove specific css class
/// </summary>
/// <param name="controlInstance">Control to which css is to be added or remove</param>
/// <param name="css"> Css class name to be added</param>
/// <param name="bAddClass"> True to Add / false to remove</param>
public static void AddOrRemoveCssClass(this WebControl controlInstance, string css, bool bAddClass)
{
if (bAddClass)
{
controlInstance.AddCssClass(css);
}
else
{
controlInstance.RemoveCssClass(css);
}
}
NOTE: whether you add or replace a css class in codeBehind, remember to include equivalent attributes in both classes i.e. both having background-color, font-family...etc. because otherwise you may be fooled to think that the class never switched even though it did but didn't update the equivalent attributes.
lblName.Attributes.Add("class","urclassname"); //add class to lblName
To remove css Class from Code Behind
lblName.Attributes["class"] = lblName.Attributes["class"].Replace("required", "");;