访问aspx页面中的控件

时间:2010-06-28 16:27:39

标签: asp.net ascx webforms

我们有一些代码用于在ASP.NET webforms页面上构建一对键/值控件对及其值。我们使用“Controls”集合和递归来构建这个键/值对。

唯一的问题是ascx控件似乎没有出现在“Controls”集合中。相反,我们得到了ascx上的控件。

类似于以下代码:

protected override void OnLoad(EventArgs e)
{
    GetControls(this);
}
protected void GetControls(System.Web.UI.Control ctl)
{
    foreach (Control subCtl in ctl.Controls)
    {
        GetControls(subCtl);

        string value;
        if (GetValueFromControl(subCtl, out value))
        {
                _ControlValues.Add(subCtl.ClientID, value);
        }
    }
}

subCtl永远不是ascx控件。有没有办法在页面上获取ascx控件列表,或者更好的是包含这两种类型的不同集合?

由于

汉斯

2 个答案:

答案 0 :(得分:1)

据我所知,ASCX控件包含在Controls集合中。

我创建了一个继承System.Web.UI.WebPage的类,它将遍历this.Controls中的所有控件,并且它包含所有ASCX类。

答案 1 :(得分:1)

.ascx控件确实出现在控件集合中。

查看你的代码,我想知道这可能是GetValueFromControl函数的一个问题 - 也许它对.ascx控件没有正常运行,或者你正在寻找的任何值都没有设置?或者,真实代码中的等效递归函数可能只是将叶节点添加到_ControlValues,并跳过带有子节点的节点?