访问aspx页面中的控件
问题描述:
我们有一些代码用于构建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控件的列表,或者更好地还是包含两种类型的不同集合?
感谢
汉斯
答
.ascx控件确实出现在控件集合中。
看着你的代码,我不知道这是否可能是GetValueFromControl函数的问题 - 也许它不能正确运行.ascx控件,或者你正在寻找的任何值没有设置?或者,也许真正的代码中的等效递归函数仅将叶节点添加到_ControlValues,并跳过带有子节点的节点?
答
据我所知,ASCX控制都包含在Controls
收藏。
我做了一个继承System.Web.UI.WebPage
的类,它将遍历this.Controls
中的所有控件,它包含了所有的ASCX类。
欢呼声我认为我现在拥有它 – user378199 2010-06-29 15:35:46