2010-06-28 100 views
2

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

唯一的问题是,ascx控件似乎没有回到“控件”集合中。相反,我们获得了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控件的列表,或者更好地还是包含两种类型的不同集合?

感谢

汉斯

回答

1

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

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

+0

欢呼声我认为我现在拥有它 – user378199 2010-06-29 15:35:46

1

据我所知,ASCX控制都包含在Controls收藏。

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

相关问题