最近看了Cat Chen的几篇文章,自己也在试着去深入学习viewstate以及页面的生命周期,在过程当中有了更深一步的了解,又联想到了许多其他的东西,就混杂在了一块,遇到了一些新的问题。

        第一、我在想刷新页面和post之间的区别,经过trace的实验,我发现每次刷新都是重复上一此请求的过程。也就是说:如果是第一次没有post的请求,刷新页面也是没有相关的post事件产生,如果是post后再刷新页面,同样也是有相关的post事件产生。

         第二、在post以后再刷新页面的时候viewstate的值应该不改变,因为IsDirty的值为false想深入了解原因的请参考Cat Chen相关文章。

         第三、在
Cat Chen提供的一个例子中,是根据dropdownlist的值来动态的创建textbox我加上trace后代码如下:

      
 1private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e)
 2        {
 3            for(int i=0;i<this.DropDownList1.SelectedIndex;i++)
 4            {
 5                System.Web.UI.WebControls.TextBox tb = new TextBox();
 6                Form1.Controls.Add(tb);
 7                Trace.Warn("selehandle","ni kankan");
 8            }

 9
10        }

      页面上还有一个button来专门post,没有任何handle代码

      我现在不明白的是如果把dropdownlist的viewstate禁用以后,点击button仍然执行DropDownList1_SelectedIndexChanged事件代码--从trace可以看出来。也就是说在viewstate禁用以后页面事件的执行和没有禁用viewstate时有差别?到底有什么差别?为什么会有这种差别?

      第四、动态创建控件时最好时在OnInit里面写代码,但有些情况在Onload里面也是可以的,这两种方法的具体区别在哪?我知道区别在于OnInit时还没有LoadViewState(),我想知道具体的更深入的比较,我希望能有高手能针对这个写篇文章,最好能附上例子,这样象我这些新手才能更好的理解,先谢了。
      
      在此推荐两篇文章,关于viewsate的 Understanding asp.net viewstate    truely understanding viewstate
posted on 2006-11-12 14:37  王@友  阅读(1784)  评论(2编辑  收藏  举报