9

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

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

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

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

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

谢谢

4

6 回答 6

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>
于 2012-11-22T23:31:41.863 回答
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);
于 2012-11-22T23:47:04.773 回答
2
liComPapers.Attributes.Remove("class");

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

于 2013-07-24T11:49:27.827 回答
2

建议的方法

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());
于 2014-11-10T10:21:02.823 回答
1

尝试以下操作:

liComPapers.Attributes.Remove("class");

AttributeCollection.Remove 方法

于 2012-11-22T23:30:59.463 回答
0

您的代码似乎正确。检查此链接:如何:为 ASP.NET 网页中的控件设置 HTML 属性

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

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

于 2012-11-22T23:31:08.667 回答