ASP.NET Web Page应用深入探讨 六
2008-05-12 09:27:28.0
这里又引出一个常见的问题:

  经常有网友问,为什么修改提交后的数据并没有更改

  多数的情况都是他们没有理解服务器事件的触发流程,我们可以看出,触发服务器事件是在Page的Load之后,也就是说页面会先执行Page_Load,然后才会执行按钮(这里以按钮为例)的点击事件,很多朋友都是在Page_Load中绑定数据,然后在按钮事件中处理更改,这样做有一个毛病,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,但是我举了一些初学者常犯的错误和出现错误的原因,希望可以给大家带来启发。


本文引用的地址为IT专家网
文章评论
[以下网友留言只代表其个人观点,不代表中华网的观点或立场]
发表评论
昵 称:
主 页:
内 容:
表 情: