ASP.NET动态添加控件,刷新消失,获取不到值等问题原因分析

来源:互联网 发布:情侣 知乎 编辑:程序博客网 时间:2024/05/19 18:46
很多朋友特别是初级朋友都遇到过这种情况
点击一个按钮,动态添加一个服务器控件到画面,当画面刷新后控件不见了;或者在后台代码找不到刚才添加的控件。
这里我来解释一下,并非由于动态添加就会消失,其实所有控件都消失了。
是不是很吃惊?其实很简单,无论第一次加载还是回传,都会根据请求的画面名称找到对应的后置代码,然后实例化,学过java的应该很清楚,就好像jsp的调用servlet。
那么每次实例化就等于要初始化控件,即你向画面上拖拖拽拽的服务器端控件,问题就在这里,初始化控件的代码并不包含你动态添加的代码,所以一刷新画面动态加载的控件就消失了。
所以阿,不要以为自己是动态控件就自卑,和其他控件还是一样的。要做的关键是就在初始化其他控件的时候,也初始化动态控件,即在OnInit方法中重新实例动态控件。
那么控件都是新实例的,为何还能保存上次画面的内容呢?因为...你猜猜...
每次初始化控件之后,系统会根据从ViewState中找出对应的值赋给新实例的控件,因此,显示的时候才会和上次的画面一样。
所以每次看到的画面都是新画面,只是样子一样罢了。
0 0