+ -
当前位置:首页 → 问答吧 → 为什么ContentPage里的控件不能直接用FindControl找到?为什么一定要通过母版页去找?

为什么ContentPage里的控件不能直接用FindControl找到?为什么一定要通过母版页去找?

时间:2011-12-27

来源:互联网

1.在母版页中,如果需要找母版页中的控件:
this.FindControl("控件ID");

2.在母版页中,如果需要找ContentPage的控件,可以用:
this.FindControl("ContentPlaceHolderID").FindControl("控件ID");

3.在ContentPage中,如果需要找母版页中的控件,可以直接调用:
this.Master.FindControl("控件ID");

4.可是,为什么在ContentPage中找自己页面里的控件,必须先通过找到母版页中的ContentPlaceHolder,然后再找其中的控件:
this.Master.FindControl("ContentPlaceHolderID").FindControl("控件ID");

难道ContentPage连自己页面里的控件,都不能直接通过:
this.FindControl("控件ID");来找到吗?

这种设计太怪异了,敢问各位前辈,这到底是为什么?

作者: bigbro001   发布时间: 2011-12-27

查看源文件 控件的Id变了,控件的Id被加上了ContentPlaceHolderID_,所以你找不到

作者: hufenglongyy   发布时间: 2011-12-27

多谢楼上大侠提示,可是FindControl方法调用的时候,后台代码还没有被渲染成html控件,那时候控件的id应该还是和aspx中定义的一样的吧,这时候难道就不能通过id直接在ContentPage中找到自己页面中的控件么?

作者: bigbro001   发布时间: 2011-12-27