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");来找到吗?这种设计太怪异了,敢问各位前辈,这到底是为什么?
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");来找到吗?这种设计太怪异了,敢问各位前辈,这到底是为什么?
解决方案 »
- 还是关于Cookie,顶者有分。
- 关于使用GridView先对记录集,添加、排序、删除后再存储的问题
- 网站合并问题!
- 如何配置角色与成员问题?
- 请教:Asp.net在本机上用vs.net开发时是不是一定要在本机上装IIS呢?
- 请教高手!利用JavaScript将生成的文件导出
- DropDownList动态添加项目的时候,怎么显示空格?
- 上传文件的字节最大限制是多少啊?
- SAUCER!紧急求助,高人请进!UP有分!
- 你的system 是ntfs 还是 fat32?
- 无法将类型为“DataBoundLiteralControl”的对象强制转换为类型“WebControls.DropDownList”
- 在asp.net中,用js控制windows media player,实现连续播放代码
你的这个问题问得非常好。但是我觉得最近csdn的气氛,还是期望自己去深入理解asp.net的findcontrol的源代码,有一点心得然后讨论比较好。自己读一些源代码,培养动手去看源代码的思路,不要都是深手让别人灌输一点概念。
楼主的问题其实跟“命名容器”这个概念有关。比如Page下放一个文本框,ID为TextBox1,在GridView里再放一个TextBox1,在Repeater里再放一个TextBox1,在母版页里再放一个,在用户控件里再放一个。你看到:同一页面里又可以存在多个TextBox1,为何?因为这些TextBox1位于不同的命名容器里,它们的UniqueID会自动加上前缀(除了在不是命名容器的Page里的控件)。FindControl方法是根据ID在当前命名容器范围内(或Page)的某个控件下递归地寻找控件,它寻找控件时不能进入另一个命名容器。哪些是命名容器呢?GridViewRow、DataListItem、RepeaterItem、用户控件、母版页等等。
楼主的问题其实跟“命名容器”这个概念有关。比如Page下放一个文本框,ID为TextBox1,在GridView里再放一个TextBox1,在Repeater里再放一个TextBox1,在母版页里再放一个,在用户控件里再放一个。你看到:同一页面里又可以存在多个TextBox1,为何?因为这些TextBox1位于不同的命名容器里,它们的UniqueID会自动加上前缀(除了在不是命名容器的Page里的控件)。FindControl方法是根据ID在当前命名容器范围内(或Page)的某个控件下递归地寻找控件,它寻找控件时不能进入另一个命名容器。哪些是命名容器呢?GridViewRow、DataListItem、RepeaterItem、用户控件、母版页等等。
寻找控件时会判断其是否实现了INamingContainer接口,如果是的话,就不进入它里面寻找。
谢谢解答下个 帖子不能沉啊
这个问题没解决 帖子不能沉啊问题是这样的 比如我通过post传递一个300字左右的文章 没问题但是传递500字的时候 SessionID这个唯一标识丢掉了
比如按照上面的配置 cookieless="true"才行 但是缺点是出现SESSION在地址栏有没有其他办法可以解决问题谢谢了
楼主的问题其实跟“命名容器”这个概念有关。比如Page下放一个文本框,ID为TextBox1,在GridView里再放一个TextBox1,在Repeater里再放一个TextBox1,在母版页里再放一个,在用户控件里再放一个。你看到:同一页面里又可以存在多个TextBox1,为何?因为这些TextBox1位于不同的命名容器里,它们的UniqueID会自动加上前缀(除了在不是命名容器的Page里的控件)。FindControl方法是根据ID在当前命名容器范围内(或Page)的某个控件下递归地寻找控件,它寻找控件时不能进入另一个命名容器。哪些是命名容器呢?GridViewRow、DataListItem、RepeaterItem、用户控件、母版页等等。
寻找控件时会判断当前的容器控件其是否实现了INamingContainer接口,如果是的话,就不进入它里面寻找。