看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("