【问题标题】:remove css class in code behind在后面的代码中删除 css 类
【发布时间】:2011-05-19 00:40:15
【问题描述】:

我有这个控制

<asp:Label ID="lblName" runat="server" Text="My Name" CssClass="required regular" />

我想从后面的代码中删除required 类,我该怎么做?

【问题讨论】:

    标签: c# asp.net css


    【解决方案1】:

    您可以将“required”替换为空字符串:

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

    【讨论】:

    • 简单,可能容易出错。假设您有一个像 "dialog authentication-dialog modal" 这样的 CSS 类列表,并且您删除了“对话框”类。使用此答案中的代码,您最终会得到" authentication- modal"
    • 您仍然可以进行替换,但使用正则表达式排除连字符错误情况。您不能使用 \b 单词边界元字符,因为这将匹配“-”作为边界。而是使用lblName.CssClass = Regex.Replace(lblName.CssClass, @"(?&lt;![\w-])dialog(?![\w-])", "");之类的东西,它使用向后看和向前看来匹配不包括连字符的单词边界
    • 我尝试了 3 天来解决类似的问题,在看到您的代码后,我在一分钟内修复了它。
    【解决方案2】:

    使用这个:

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

    【讨论】:

    • ooppsss 我实际上和 Jorge M 有相同的答案。您可以将他的答案标记为正确。虽然当我发布我的答案时没有注意到他的答案是第一位的。对此感到抱歉。
    【解决方案3】:

    只是一种更通用的方法 - 应该排除在 CssClass 属性的其他地方可能出现 css 类的潜在错误。

    public void RemoveCssClass(WebControl controlInstance, String css)
    {
        controlInstance.CssClass = String.Join(" ", controlInstance.CssClass.Split(' ').Where(x => x != css).ToArray());
    }
    

    【讨论】:

    • 我更喜欢这种方法,因为当你将它写入扩展类时,它更像是 MVC 风格(在所有 WebControls 上提供添加和删除 CSS 类方法)。
    • 谢谢 |我使用它并做了如下扩展类: 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()); } }
    【解决方案4】:
    lblName.Attributes.Add("class","urclassname"); //add class to lblName
    

    【讨论】:

    • 虽然这确实添加了类......但它没有像 jQuery 那样好的“删除”方法......所以我更喜欢 KevD 或 Jorge 概述的 CssClass 方法。跨度>
    • 请解释您在编辑答案时所做的事情,避免仅使用代码回答
    【解决方案5】:

    这对我有用

    lblName.CssClass = "regular";
    

    【讨论】:

      【解决方案6】:

      注意:无论您在 codeBehind 中添加还是替换 css 类,请记住在两个类中包含等效属性,即都具有背景颜色、字体系列...等。因为否则您可能会误以为该类从未切换,即使它确实切换了但没有更新等效属性。

      【讨论】:

        【解决方案7】:

        从后面的代码中删除 css 类

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

        【讨论】:

          【解决方案8】:

          这是我受@KevD 的代码示例启发的代码。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-01-13
            • 2012-11-11
            • 2016-06-05
            • 2012-03-15
            • 2014-07-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多