码。当用户单击某个按钮时,页面回发数据。已发送值的集合中包含该按钮(该按钮启动整个操作)的ID。如果已知该控件实现了IPostBackEventHandler接口(按钮和链接按钮将实现此接口),则页面框架调用RaisePostBackEvent方法。此方法所进行的操作取决于相应控件的类型。对于按钮和链接按钮,此方法查找Click事件处理程序并运行相关的委托。在处理回发事件后,页面就准备进行呈现。这一阶段的标志是PreRender事件。各个控件可利用这个很好的时机,以便执行任何需要在保存视图状态和呈现输出结果的前一刻完成的最后一些更新操作。下一个状态为SaveViewState,在这一状态中所有控件以及页面本身可以刷新自己的ViewState集合的内容。所得到的视图状态随后得以序列化、进行哈希运算、进行Base64编码并关联到__VIEWSTATE隐藏字段。通过重写Render方法,即可更改各个控件的呈现机制。该方法获取一个HTML编写器对象,并使用该对象聚集所有将针对该控件生成的HTML文本。Page类的Render方法的默认实现方式包括对所有成员控件的递归调用。对于每个控件,页面都调用Render方法并将HTML输出放入高速缓存。一个页面的最后生存标志就是Unload事件,该事件在页面对象被解除之前发生。在此事件中,您应该释放可能占用的任何关键资源(例如,文件、图形对象、数据库连接)。终于,在此事件之后,浏览器收到HTTP响应数据包并显示页面。页面对象模型由于使用了事件机制而特别具有创新意义。Web页面由各种控件构成,这些控件既形成一个丰富的基于HTML的用户界面,又通过事件与用户进行交互。在Web应用程序的上下文中建立事件模型是一项极具挑战性的任务。令人惊奇的是,利用服务器端代码可以处理客户端生成的事件,而且这种方法的输出看起来与HTML页面相同,只是经过了适当的修改。