星辉

星月同辉 e路随行
.net/vs2005/c#/web/ajax
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[转]ASP.NET:掌握Web窗体的生命周期与状态管理

Posted on 2007-12-03 23:36  star163  阅读(199)  评论(0编辑  收藏  举报

我们知道基于Web的访问方式是断开式的,Web页面是无状态性的。而于ASP中的线性驱动方式不同的是ASP.NET采用的是事件驱动模式,那么 ,Web窗体是怎么样做到ASP.NET页面状态的维护的呢?在ASP.NET中引入了一个概念:View State,从而用View State来保存页面的状态信息。

除了第一次的访问请求是有基类生成以外,以后每次客户端的回传都是根据客户端传来的页面状态来重新创建页面。而页面的各个状态信息就保存在客户端页面源文件的隐藏字段中,我们可以通过浏览器查看到它,value的值就是经过加密的页面状态信息。服务器根据value值进行窗体的再现,然后在窗体的事件处理阶段进行执行响应的事件过程,然后把执行结果返回到客户端,并且改变Web窗体的状态值,并回写到value值中。最后到达资源清理阶段。整个过程就是一个Web窗体的生命周期,同时也完成了页面状态的管理。

下面这个实例演示了ASP.NET页面框架是如何维护页面状态的。所有代码如下:

<%@ Page Language="VB" %>










onclick="Button1_Click" runat="server" Text="点击累加">


保存为viewstate.aspx,运行结果如图4.9所示。

 
图4.9 点击3次按钮之后

在客户端的浏览器中,我们查看源文件,可以查看到的隐藏字段的值为:

value="dDwtOTk1MjE0NDA4O3Q8cDxsPHZhbHVlOz47bDxpPDM+Oz4+O2w8aTwxP
js+O2w8dDw7bDxpPDE+Oz47bDx0PHA8cDxsPFRleHQ7PjtsPOi/meaYr+esrCAz54K5
5Ye75oyJ6ZKuOz4+Oz47Oz47Pj47Pj47PmLc5pTevWJok9DSup0E5RUygUMi" />

而整个页面的状态信息就其中。