迭代虽然asp.net页面上的所有控件 [英] Iterate though all controls on asp.net page

查看:108
本文介绍了迭代虽然asp.net页面上的所有控件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用ASCX,我需要通过的所有控件进行迭代,并选择每个拥有的CssClass属性设置为需要。

I'm using ascx and I need to iterate through all of the controls and selects each that have cssClass attribute set to 'required'.

我有以下的code:

foreach (Control masterControl in Page.Controls)
        {
            if (masterControl is MasterPage)
            {
                foreach (Control formControl in masterControl.Controls)
                {
                    if (formControl is System.Web.UI.HtmlControls.HtmlForm)
                    {
                        foreach (Control contentControl in formControl.Controls)
                        {
                            if (contentControl is ContentPlaceHolder)
                            {
                                foreach (Control childControl in contentControl.Controls)
                                {

                                }
                            }
                        }
                    }
                }
            }
        }

但是..我不能访问childControl.CssClass。如何访问呢?

however.. i cannot access childControl.CssClass. How do I access it?

在此先感谢!

推荐答案

的CssClass 属性是的 WebControl类

您必须检查如果控制是夏精,或者,如果它只是一个控制,可以在属性集合获取属性类。

You have to check if the control is a webcontrol, or, if it's only a control, you can get the attribute "class" in the attributes collection.

例如,你可以这样做:

List<WebControl> wcs = new List<WebControl>();
GetControlList<WebControl>(Page.Controls, wcs)
foreach (WebControl childControl in wcs)
{
     if(childControl.CssClass == "required") {
     // do the 
      }
}

您也可以递归迭代。 code在这里找到:<一href=\"http://stackoverflow.com/questions/4463319/using-c-to-recursively-get-a-collection-of-controls-from-a-controlcollection\">Using C#递归从ControlCollection中获得控件的集合:

You also have to iterate recursively. Code found here : Using C# to recursively get a collection of controls from a controlcollection :

private void GetControlList<T>(ControlCollection controlCollection, ref List<T> resultCollection)
where T : Control
{
    foreach (Control control in controlCollection)
    {
        //if (control.GetType() == typeof(T))
        if (control is T) // This is cleaner
            resultCollection.Add((T)control);

        if (control.HasControls())
            GetControlList(control.Controls, ref resultCollection);
    }
}

这篇关于迭代虽然asp.net页面上的所有控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆