问题描述
||
我的Global.asax文件中包含以下代码:
System.Web.UI.Page webPage = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
string date = ((Literal)webPage.FindControl(\"ltlGenTime\")).Text;
该控件肯定存在于网页上,并且我已经通过检查webPage对象及其基类进行了验证,并且它绝对是一个文字控件。
现在,我进行了一项更改,似乎已引起了这一变化-我为所有页面创建了一个母版页。但是我很困惑,因为webPage对象仍然列出了我需要的控件。
有任何想法吗?
解决方法
母版页会修改页面控件的层次结构,因此,您首先需要从母版中找到内容占位符,然后找到实际的控件-例如,
Master.FindControl(\"YourContentPlaceholderId\").FindControl(\"ControlName\");
有关更多信息,请参见本文。
,您的2级控制在哪里?我猜是在主人那里。
如果它在母版页上,则您需要使用
string date = ((Literal)webPage.Master.FindControl(\"ltlGenTime\")).Text;
,请注意,FindControl
不会进行递归搜索。您可能必须找到其所在的适当容器。
,尝试使用我在这里找到的此递归FindControl函数。
private Control FindControlRecursive(Control root,string id)
{
if (root.ID == id)
{
return root;
}
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c,id);
if (t != null)
{
return t;
}
}
return null;
}