asp.net页面生命周期之回发的处理
2014-08-14 16:54
183 查看
回发机制是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方法上。
在页面被初始化,且被投递值也已就位后,便可以引发服务器端的事件。这些事件主要分为两类。第一类事件标志着特定控件在回发间状态发生了改变。第二类事件是在服务器端对引发投递的客户端动作的响应。
控件状态变化的检测
整个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方法上。
相关文章推荐
- Asp.net页面生命周期详解任我行(3)-服务器处理请求详细过程
- IIS处理Asp.net请求和Asp.net页面生命周期说明
- Asp.net url重写后页面回发地址改变的处理
- IIS处理Asp.net请求和Asp.net页面生命周期详细说明
- ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期
- IIS处理Asp.net请求和Asp.net页面生命周期说明
- IIS处理Asp.net请求和Asp.net页面生命周期详细说明
- ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期
- ASP.Net请求处理机制初步探索之旅 - Part 4 WebForm页面生命周期
- 浅谈IIS处理Asp.net请求和 Asp.net页面生命周期
- IIS如何处理Asp.net请求和Asp.net页面生命周期方法
- ASP.Net请求处理机制初步探索之旅(4):WebForm页面生命周期
- ASP.NET 页生命周期和页面事件处理管道
- IIS处理Asp.net请求和Asp.net页面生命周期说明
- asp.net地址重写、使用伪静态、页面回发处理
- ASP.NET 的页面处理生命周期
- .net学习笔记---IIS 处理模型及ASP.NET页面生命周期
- ASP.NET地址重写、使用伪静态、页面回发处理
- ASP.NET页面提前处理问题
- 深入研究Asp.net页面的生命周期