【问题标题】:Removing CSS class from <li> tag in ASP.net from code behind从后面的代码中删除 ASP.net 中 <li> 标记的 CSS 类
【发布时间】:2012-11-11 08:33:39
【问题描述】:

我向我的 li 标签添加了一个 css 类,如下所示:

liComPapers.Attributes.Add("class", "NoDisplay");

有什么方法可以从我代码中其他地方的那个 li 标签中删除这个特定的类(NoDisplay)?

我尝试了以下代码,但它不起作用。

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

谢谢

【问题讨论】:

    标签: c# asp.net html css


    【解决方案1】:

    建议方法

    liComPapers.Attributes["class"] = liComPapers.Attributes["class"].Replace("NoDisplay", "");    
    

    将剪切另一个包含字符串"NoDisplay"的css类,并会导致错误

    例如

    <li class="NoDisplay AnotherClass-NoDisplay"></li>
    

    变成

    <li class=" AnotherClass-"></li>
    

    所以,更安全的解决方案是

    liComPapers.Attributes["class"] = String.Join(" ", liComPapers.Attributes["class"]
                                            .Split(' ')
                                            .Where(x => x != "NoDisplay")
                                            .ToArray());
    

    【讨论】:

      【解决方案2】:
      liComPapers.Attributes.Remove("class");
      

      我们可以删除特定 li 标签的 CSS 属性

      【讨论】:

        【解决方案3】:

        如果我理解正确:

        如果您只想删除NoDisplay,您可以将字符串的那部分替换为空字符串:

        liComPapers.Attributes["class"] = liComPapers.Attributes["class"].Replace("NoDisplay", "");
        

        但是,.Add("class", "NoDisplay") 不会将新类添加到您的类属性中。它将创建一个新的class 属性,其值为NoDisplay。因此,如果您的标记当前是:

        <li class="myClass"></li>
        

        它会变成:

        <li class="myClass" class="NoDisplay"></li>
        

        这是无效的标记。

        要将新类附加到具有现有类的元素,您可以:

        liComPapers.Attributes["class"] += " NoDisplay";
        

        这将呈现:

        <li class="myClass NoDisplay"></li>
        

        【讨论】:

        • 你比我快一点:)
        【解决方案4】:

        我刚刚制作了一个示例来测试您的代码,发现以下部分将完全符合您的要求:

         var newClassValue = liTest.Attributes["class"].Replace("NoDisplay", "");
         liTest.Attributes["class"] = newClassValue;
        

        经过测试和工作: 如果(由于某种原因)上面的代码不起作用,我会推荐另一种方法,它类似于以前的方法,用另一种方法替换类值

        var newClassValue = liTest.Attributes["class"].Replace("NoDisplay", "");
        liTest.Attributes.Remove("class");
        liTest.Attributes.Add("class",newClassValue);
        

        【讨论】:

          【解决方案5】:

          您的代码似乎正确。 查看此链接:How to: Set HTML Attributes for Controls in ASP.NET Web Pages

          你在使用回调/ajax 吗?也许你没有考虑到这一点..

          尝试做一个只有一个控件的简单页面并放置一个按钮来执行回发,在按钮的单击事件(服务器端)上分配属性,方法与以前相同。它应该可以工作。

          【讨论】:

            【解决方案6】:

            尝试以下方法:

            liComPapers.Attributes.Remove("class");
            

            AttributeCollection.Remove Method

            【讨论】:

              猜你喜欢
              • 2011-05-19
              • 1970-01-01
              • 2011-01-07
              • 2014-01-13
              • 1970-01-01
              • 2016-12-02
              • 2014-07-18
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多