如果你具有使用 Active Server Pages (ASP) 的经验,你将认识到 ASP 是线性处理模型。ASP 页是按从上到下的顺序处理的。ASP 代码和静态 HTML 的每一行都按其在文件中的显示顺序进行处理。在往返行程中用户操作导致页被发送到服务器。因为此操作导致往返行程,所以服务器必须重新创建该页。在重新创建该页后,将通过与以前相同的从上到下的顺序对该页进行处理,因此,该页未表现出真正的事件驱动行为。若要创建事件驱动体验,你需要显式设计它。此外,你必须在最基本的级别上显式维护页和控件状态。此模型限制了可以组合的用户界面的丰富程度,并且此模型增加了需要支持它的代码的复杂性。
与此相比,传统 Visual Basic 应用程序中的事件驱动模型包含可编程的元素,这些元素可被初始化并在窗体上显示。用户与这些元素进行交互,而这又导致引发调用事件处理程序的事件。此模型支持真正的事件驱动行为,这在设计上极大拓宽了可以组合的用户界面的丰富程度,并且降低了需要支持它的代码的复杂性。
ASP.NET 通过模拟事件驱动模型的行为代替了 ASP 的线性处理模型。提供 ASP.NET 页框架以隐式地为你建立事件和事件处理程序的关联。利用该页框架,你可以很容易地创建响应用户操作的用户界面。
首先,我们必须先了解一下Web窗体的生命周期,才能更好的了解Web窗体的状态管理。
一个Web窗体的生命周期类似于在服务器中运行的Web进程的生命周期。一个Web窗体从实例化分配内存空间到处理结束释放内存,一般经历下面4个步骤:初始化、页面装载、事件处理和资源清理。
(1)页面初始化
当页面被初始化时,发生第一个事件Page_Init。系统会执行创建和设置一个