ASP.NET AJAX 之服务器端页面流程

news/2024/7/3 6:53:08

很明显的,ScriptManager 和 UpdatePanel 是ASP.NET AJAX中最重要的2个类。

用Reflector查看Microsoft.Web.Extensions.dll 里的类时,发现有很多个接口,譬如象IHtmlForm,IHttpBrowserCapabilities,IHttpCachePolicy,IHttpContext,IHttpRequest,IHttpResponse,IPage等,封装了System.Web里对应类的某些方法,还有对应的一些Wrapper类,譬如HtmlFormWrapper ,HttpBrowserCapabilitiesWrapper,HttpCachePolicyWrapper,HttpContextWrapper,HttpRequestWrapper,HttpResponseWrapper,PageWrapper等,使用System.Web里对应类的对象实现了上面这些接口的方法。看上去,下一个版本ASP.NET将会有很多重构!

仔细看了一下 ScriptManager 类的实现,发现很多一些功能都被抽象出来, 封装在 PageRequestManager 类(客户端有一个同名的类)里。

页面起始的GET大概的流程如下:


局部更新的POSTBACK大概的流程如下:



其中 PageRequestManager 类在 IsAsyncPostBackRequest() 方法中通过分析 Headers 中“Pragma”的值是否是 “Deltea=true” 来决定是否是局部更新模式。然后在执行 ScriptManager 的 LoadPostData() 中找出哪个 UpdatePanel 需要更新以及是由哪个元素造成的 PostBack,记住在前面说过,在局部更新时,类似”ScriptManager1=UpdatePanel1|btnUpdate&....“ 这样的数据被提交到服务器端了。然后在执行 ScriptManager 的 OnPreRender() 时,PageRequestManager 类调用了 Page 类的 SetRenderMethodDelegate(),通过设置一个 RenderMethod,实际上 PageRequestManager 类接管了显示输出的逻辑。

 



http://www.niftyadmin.cn/n/3652872.html

相关文章

.Net服务组件(ServicedComponent)简介及其使用

.Net服务组件(ServicedComponent)简介及其使用.NET Enterprise Services 为企业应用程序提供重要的基础结构。COM 为企业环境中部署的组件编程模型提供服务结构。System.EnterpriseServices命名空间向 .NET 对象提供对 COM 服务的访问,COM 服…

Linux账号权限的管理

Linux账号权限管理一. 用户账号和组账号概述1. Linux基于用户身份对资源访问进行控制1. 用户账号2. 组账号3. UID和GID2. 用户账号文件/etc/passwd1. 保存用户名称、宿主目录、登录shell等基本信息3. 用户账号文件/etc/shadow1. 保存用户的密码、账号有效期等信息4. 添加用户账…

如何检测Remote Objects是否部署成功

在调试.Net Remoting程序时,经常会出现一些莫名其妙的问题,IDE提示的异常信息有时也不一定正确。很多时候都是自己粗心,配置configuration文件上出了问题,包括Client和Server端的配置文件。  言归正传,这里看看如何检…

Linux 磁盘设备文件管理

Linux 磁盘设备文件管理一. 磁盘结构1. 磁盘物理结构2. 磁盘数据结构3. 硬盘的存储容量4. 磁盘接口类型5. MBR与磁盘分区表示6. 磁盘分区结构二. 文件系统类型1. XFS文件系统2. SWAP交换文件系统3. Linux支持的其他文件系统类型三、创建新的磁盘1. 查看或管理磁盘分区&#xff…

socket异步处理问题

由于一个项目要和第三方软件做接口,第三方软件是Unix的操作系统,所以用了Socket来传输数据。具体结构是这样的:本项目作为服务器端,第三方软件是客户端,并且有多个客户端。通常情况下,要开多个线程来处理多…

Linux挂载windows 共享文件

Linux挂载windows 共享文件学习目标操作步骤学习目标 Linux挂载window 共享文件 操作步骤 windows端共享权限设定: 1.解禁Guest 右击我的电脑选择管理–>本地用户和组–>在用户项中双击Guest用户–>取消账号已禁用选项 2.设置共享目录权限 右击共享目录点属性–…

.Net Remoting中Remote Server的Port占用/释放问题

这一问题一般出现在Console application/Windows Service承载Remote Objects时,要求Remote Server指定特定port。IIS在承载Remote Objects并不需要指定特定port,因此一般不会出现SocketException异常信息。1. 启动承载Remote Objects的Console applicati…

LVM逻辑卷管理和磁盘配额

LVM逻辑卷管理和磁盘配额一. LVM逻辑卷管理1. 逻辑卷管理2. LVM机制的基本概念2.1 LVM主要命令2.2 LVM应用实例2.3 扩容二. 磁盘配额1. 磁盘配额基本2. 命令3. 查看磁盘容量和文件数的报告4. 磁盘配额步骤及验证一. LVM逻辑卷管理 1. 逻辑卷管理 ●能够在保持现有数据不变的情…