您要在 asp.net 中构建 web 应用程序,您希望通过使用内置的 page controller(页面控制器)来利用 asp.net 的事件驱动特性.
默认情况下,page controller 模式中所描述的概念是在 asp.net 中实现的.asp.net 页面框架实现这些概念所采取的方式使得在客户端上捕获事件.将其传输到服务器并调用适当方法这一系列操作的基本机制是自动进行的,并且对实现者来说是不可见的.页面控制器是可扩展的,因为它会在生命周期的特定点上公开各种事件(请参阅此模式后面的"页面生命周期"),因此,与应用程序具体相关的操作可以在适当的时候运行. 【程序编程相关:圆周率的计算方法】
实现策略 【推荐阅读:spring,ioc模式与ejb3调用】
页面生命周期 【扩展信息:[原创代码]XMLHTTP批量抓取远程资】
例如,假定用户正在与包含一个按钮服务器控件的 web 窗体页进行交互(请参阅此模式后面的"简单页面示例").当用户单击按钮控件时,一个事件将作为 http 投递内容传送到服务器,在那里,asp.net 页面框架会解释投递的信息,并将引发的事件与适当的事件处理程序相关联.框架自动调用该按钮的适当事件处理程序,作为框架的正常处理的一部分.因此,您不再需要实现此功能.此外,您还可以使用内置控制器,或者,您可以用自己自定义的控制器来代替内置控制器(请参阅 front controller).
下面按发生顺序列出了页面生命周期中最常见的各个阶段.其中还包括引发的特定事件,以及处理请求时在各个阶段可能执行的一些典型操作:
asp.net 页面框架初始化(事件:init).这是生命周期的第一个步骤,该步骤将初始化 asp.net 运行库以便为响应请求做好准备.
用户代码初始化(事件:load).您应该执行与应用程序具体相关的常见任务,例如,当页面控制器引发 load 事件时打开数据库连接.您可以假设:引发 load 事件后,服务器控件已创建并完成初始化.状态已还原并且窗体控件反映了客户端的更改. [reilly02]
与应用程序相关的事件处理.在此阶段,您应该执行与应用程序相关的处理,以响应控制器引发的事件. .
清理(事件:unload).该页面已完成生成,现在可以丢弃.您应该关闭 load 事件打开的任何数据库连接,丢弃任何不再需要的对象.在连接对象被作为垃圾回收后,microsoft?.net framework 将自动关闭数据库连接.不过,您对何时进行垃圾回收没有任何控制权.因此,显式关闭数据库连接以充分利用数据库连接池是一个很好的做法.
注意:还有几个页面处理阶段没有在这里列出.不过,这些阶段不用于大多数页面处理情况.
简单页面示例
第一个示例是一个简单页面,它接受来自用户的输入,然后在屏幕上显示该输入.该示例说明了 asp.net 用于实现服务器控件的事件驱动模型.
图 1: 简单页面
当用户键入他或她的名字.然后单击"click here"按钮后,键入的名字将直接出现在按钮下面,如图 2 所示.
图 2: 显示用户输入的简单页面
在 asp.net 网页中,用户界面编程分为两个不同的部分:可视组件(或视图)与结合了模型与控制器的逻辑.... 下一页