从后面的代码中删除ASP.net中<li>标记的CSS类</li>

时间:2012-11-22 23:20:47

标签: c# asp.net html css

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

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

有没有办法从我的代码中的其他地方的li标签中删除这个特定的类(NoDisplay)?

我尝试了以下代码,但它无效。

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

由于

6 个答案:

答案 0 :(得分:7)

如果我理解正确:

如果您只想删除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>

答案 1 :(得分:7)

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

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

答案 2 :(得分:2)

liComPapers.Attributes.Remove("class");

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

答案 3 :(得分:2)

建议方法

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

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

E.g。

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

成为

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

因此,更安全的解决方案是

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

答案 4 :(得分:1)

尝试以下方法:

liComPapers.Attributes.Remove("class");

AttributeCollection.Remove Method

答案 5 :(得分:0)

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

您使用的是回调/ ajax吗?也许你没有考虑那个..

尝试使用一个控件做一个简单的页面并按下按钮进行回发,在按钮的点击事件(服务器端)上按照以前的方式分配属性。它应该有用。