【问题标题】:how to remove a class name from entire page asp.net c#如何从整个页面asp.net c#中删除类名
【发布时间】:2017-05-06 09:30:11
【问题描述】:

我的代码是这样的

<th runat="server" id="thTodayToTenTotal" class="redRow">  
<th runat="server" id="thTodayToTenTotal" class="redRow">

我从 CodeBehind 中删除了 class="redRow" 这样的属性

thTodayToTenTotal.Attributes.Remove("class"); 

没关系。

但是“redRow”类可以在我的页面中有很多。如何一次性从整个页面中删除此类名称。然后我想将这个类添加到一个html元素中。我的意思是我有

<th runat="server" id="wantToAddClass"> 

我像这样从 CodeBehind 添加类

wantToAddClass.Attributes.Add("class", "redRow");

【问题讨论】:

  • 你能详细解释一下吗
  • 请查看我编辑的问题。谢谢 Satish Patil。
  • 您对 Jquery 解决方案持开放态度吗?
  • 很确定你想循环浏览控件集合

标签: c#


【解决方案1】:

正如 CRise 评论的那样,您必须循环所有 Web 控件并找到具有所需类的每个控件。

让我在这里给你一些帮助。

让我们创建一个实用程序方法。

IEnumerable<Control> FindControl( Control c, Func<Control,bool> predicate )
{
    if( predicate( c ) )
        yield return c;

    foreach (var child in c.Controls) {
        if (predicate((Control)child)) {
           yield return (Control)child;
        }
    }

    foreach( var child in c.Controls )
        foreach( var match in FindControl( (Control)child, predicate ) )
           yield return match;
}

然后在任何你想检查你的类的地方调用这些方法。

foreach(WebControl c in FindControl( Page, c => (c is WebControl) && 
                       ((WebControl)c).CssClass == "redRow" ))
{
     //Do your operation.
}

有关更多详细信息,SO 中已经提出了很多问题。见。

How to select an element by Class instead of ID in ASP.NET?

remove css class in code behind

您也可以使用 JavaScript 或 Jquery。

【讨论】:

  • 如果你通过后面的代码来做这件事,它会非常慢。因为页面的每个方面都被视为一个控件。
  • @Greg:是的,你是对的,但我只能用 C# 和后面的代码回答,而且你已经用 JQuery 回答了,所以我们可以建议用户使用脚本语言,但这总是取决于根据要求..
  • 我知道,只是鼓励操作人员不要这样做,除非他必须这样做,但要重新考虑解决方案。
【解决方案2】:

你可以用 jQuery 来实现,那就是:

$(document).ready (function ({
     var elements = $(".redRow");
     $.each (elements, function(index) {
          elements[index].removeAttr("class");
     });
});

那么问题是,除非从可以锚定到事件的服务器端控件,否则您将不知道要删除哪个元素。由于 id 是每页一个。否则你会尝试解析一个 html 页面,Javascript 很可能是理想的。

【讨论】:

  • 谁能格式化代码,手机不允许。
  • 感谢您的回答。请告诉我如何将此类添加到一个 html 元素。我的问题已编辑。请参阅 Greg.Thanks。
  • 抱歉,格雷格,但我们无法编辑您的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 2019-08-03
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
相关资源
最近更新 更多