打印本文 打印本文 关闭窗口 关闭窗口
ASP.Net Web Page深入探讨(二)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2285  更新时间:2009/4/23 10:50:24  文章录入:mintao  责任编辑:mintao
病,Page_Load永远都是在按钮事件之前执行,那么意味着数据还没来得及更改,Page_Load中的数据绑定的代码就先执行了,原有的数据又赋给了控件,那么执行按钮事件的时候,实际上获得的是原有的数据,那么更新当然就没有效果了。

    更改这个问题也非常简单,比较合理的做法是把数据绑定的代码写成一个方法,我们假设为BindData:

    private void BindData()

    {

        //绑定数据

    }

    然后修改PageLoad:

    private void Page_Load( object sender,EventArgs e )

    {

        if( !IsPostBack )

        {

            BindData(); //在页面第一次访问的时候绑定数据

        }

    }

    最后在按钮事件中:

    private Button1_Click( object sender,EventArgs e )

    {

        //更新数据

        BindData();//重新绑定数据

    }

 

7、   预呈现

         最终请求的处理都会转变为发回服务器的响应,预呈现这个阶段就是执行在最终呈现之前所作的状态的更改,因为在呈现一个控件之前,我们必须根据它的属性来产生Html,比如Style属性,这是最典型的例子,在预呈现之前,我们可以更改一个控件的Style,当执行预呈现的时候,我们就可以把Style保存下来,作为呈现阶段显示Html的样式信息。

 

8、   保存状态

         这个阶段是针对加载状态的,我们多次提到,请求之间是不同的实例在处理,所以我们需要把本次的页面和控件的状态保存起来,这个阶段就是把状态写入ViewState的阶段。

 

9、   呈现

         到这里,实际上页面对请求的处理基本就告一段落了,在Render方法中,会递归整个页面的控件树,依次调用Render方法,把对应的Html代码写入最终响应的流中。

 

10、处置

         实际上就是Dispose方法,在这个阶段会释放占用的资源,例如数据库连接。

 

11、卸载

         最后,页面会执行OnUnLoad方法触发UnLoad事件,处理在页面对象被销毁之前的最后处理,实际上ASP.Net提供这个事件只是设计上的考虑,通常资源的释放都会在Dispose方法中完成,所以这个方法也变成鸡肋了。 

 

         我们简单的介绍了页面的生存周期,对于服务器端事件的处理做了不太深入的讲解,今天主要是想大家了解页面执行的周期,对于服务器控件的事件和生存期我会在后续在写一些文章来探讨。

         这些内容是我在学习ASP.Net的时候对Page研究的一些心得,具体的细节没有很详细的探讨,更多的内容请大家参考MSDN,但是我举了一些初学者常犯的错误和出现错误的原因,希望可以给大家带来启发。

上一页  [1] [2] [3] 

打印本文 打印本文 关闭窗口 关闭窗口