您的位置:首页 > 其它

在使用了MasterPage后,FindControl()函数返回null的问题

2012-07-27 16:28 411 查看
看asp.net 3.5揭秘中关于跨页面传值章节时,运行了一下两种传值方式中通过使用FindControl() 方法搜索previous page页面控件来实现传值的方式,使用带母版也的方式创建两个页面,抄书代码如下



结果总是提示 txtSearch 为Null,不免有些疑问。google搜索,在MSDN上看到有相似问题,但是网页有些过气,然后在找到一篇中文文章给出详尽说明:

FindControl与容器有关(只搜索当前的容器)

MSDN的解释:

FindControl 方法可用于访问在设计时其 ID 不可用的控件。此方法只搜索页的直接或顶级容器;它不在页所包含的命名容器中递归搜索控件。若要访问从属命名容器中的控件,请调用该容器的 FindControl 方法。

按其说明修改代码:

protected void Page_Load(object sender, EventArgs e)

{

if (PreviousPage != null)

{

TextBox txtSearch = (TextBox)PreviousPage.Master.FindControl("MainContent").FindControl("txtSearch");

lblSearch.Text = String.Format("Search For:{0}", txtSearch.Text);

}

}

果真可以正通过。不禁让我想起以前pictureBox对其父透明的问题,编程出现的错误,都是有原因的,遇到问题需要抓重点,不慌张,解决之,方可进步。

事物之间的普遍联系。

出处:

/article/5578474.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: