asp.net页面生命周期之回发的处理

来源:互联网 发布:淘宝怎么参加返利网 编辑:程序博客网 时间:2024/05/22 10:06

回发机制是asp.net编程的核心。其过程为,将窗体数据投递到原页面,使用视图状态恢复调用上下文(即,上一次投递页面后,在服务器端生成的控件状态)。

在页面被初始化,且被投递值也已就位后,便可以引发服务器端的事件。这些事件主要分为两类。第一类事件标志着特定控件在回发间状态发生了改变。第二类事件是在服务器端对引发投递的客户端动作的响应。

控件状态变化的检测

整个asp.net系统隐含了这样一个假设:在浏览器运行的某些html标志与活跃在服务器端的某些asp.net控件,必须存在一一对应关系。<input type="text’>和TextBox控件间的对应就是一个典型的例子。为从技术上严格执行,该联系通过相同的Id名称表示。当用户向输入元素键入某些新文本,并将其投递到服务器后,对应的TextBox控件会被调用,以处理被传递的值。

对于所有LoadPostData方法返回true的控件,这时会执行那个IPostBackDataHandler接口的另一个方法--RaisePostDataChangedEvent方法。该方法发出信号给控件,通知asp.net应用程序该控件的状态已被更改。该方法的实现取决于具体控件。然而,大多数控件会做这样一件事:引发服务器事件,为页面的设计者提供一个介入的机会,以便对特定情况做处理。例如,如果TextBox的Text属性在回发期间被更改,该TextBox会向宿主页面引发TextChanged事件。

服务器端回发事件的执行

任何有意触发服务器端动作的客户端动作会引起回发,例如,单击一个客户端按钮会将当前显示的窗体内容投递到服务器,从而需要某个动作和新的、已刷新的页面输出。客户端按钮控件(一般为超链接或提交按钮)与实现IPostBackEventHandler接口的服务器控件相关联。

页面处理程序会分析被投递的数据,确定引发回发的控件。如果该控件实现了IPostBackDataHandler接口,处理程序会调用该接口的RaisePostBackEvent方法。该方法的实现由每个控件本身来完成。具体方式对于不同控件会有不同(至少在理论上如此)。然而,实际上任何主动投递(posting)控件都会引发服务器事件,以便页面的设计者能够编写代码,对回发做出响应。

页面回发到服务器有两种方式。一种是通过提交按钮,二是通过脚本。html提交按钮会由服务器控件BUtton生成。LinkBUtton控件,以及其他的一些可回发控件,会将一些脚本插入到客户端页面中,并将自身的某个html事件绑定到浏览器html对象模型中的窗体submit方法上。


0 0
原创粉丝点击