在我的项目中,所有.aspx页面都从一个自定义基类页面继承而来,该基类页面继承自System.Web.UI.Page。 我想在当前页面中找到控件。对于我正在使用的那个 foreach循环
foreach(control c in page.controls)
为此我无法将当前页面强制转换为system.web.ui.page。 如何将当前页面转换为系统system.web.ui.page?
答案 0 :(得分:0)
请注意,您正在处理控制树,因此您可能希望在此处进行递归。以下方法应该有所帮助(Linq带有递归调用):
private static IEnumerable<Control> FlattenControlTree<TFilterType>(Control control)
{
if (control is TFilterType)
{
yield return control;
}
foreach (Control contr in control.Controls.Cast<Control>().SelectMany((c) => FlattenControlTree<TFilterType>(c)))
{
if (contr is TFilterType)
{
yield return contr;
}
}
}
到一天结束时,您只需要致电:
var controls = FlattenControlTree<YourBaseType>(this.Page);
请注意,这种递归对于大树来说并不是很有效。
答案 1 :(得分:0)
你可以试试这个;
foreach(控制c in((System.Web.UI.Page)this.Page).Controls)