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

在尝试使用FindControl()方法在ASP.NET MasterPage中寻找控件时遇到返回null的问题。通过查阅MSDN和相关文章了解到,FindControl()只搜索当前容器,而非递归查找。为解决此问题,需要先找到命名容器(如ContentPlaceHolder),再在其内部进行查找。例如,通过`PreviousPage.Master.FindControl("MainContent").FindControl("txtSearch")`找到正确的TextBox控件。此问题提醒我们,遇到编程错误时要分析原因并冷静解决。
摘要由CSDN通过智能技术生成

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值