42
votes

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?

8

8 Answers

70
votes

You can replace "required" with an empty string:

lblName.CssClass = lblName.CssClass.Replace("required", "");
15
votes

Just 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());
}
2
votes

This worked for me

lblName.CssClass = "regular";
1
votes

Use this:

object.CssClass= object.CssClass.Replace("MyClass", "");
1
votes

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);
        }
    }
0
votes

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.

0
votes
lblName.Attributes.Add("class","urclassname"); //add class to lblName
0
votes

To remove css Class from Code Behind

lblName.Attributes["class"]=" ";