zoukankan      html  css  js  c++  java
  • ASP.NET AJAX中UpdatePanel的工作原理

          简单点来说,UpdatePanel 可以用来创建丰富的局部更新Web应用程序,它是 ASP.NET 2.0 AJAX Extensions中(ASP.Net3.5中已经包含)很重要的一个控件,它的强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个 UpdatePanel 控件和一个 ScriptManager 控件就可以自动实现局部更新。

          UpdatePanel 的工作依赖于 ScriptManager 服务端控件和客户端 PageRequestManager,当 ScriptManager 中允许页面局部更新时,它会以异步的方式回传给服务器,与传统的整页回传方式不同的是只有包含在 UpdatePanel 中的页面部分会被更新,在从服务端返回 HTML 之后,PageRequestManager 会通过操作 DOM 对象来替换需要更新的代码片段。

    以上说法可能过于笼统,下面是稍微细致点的解释:

    UpdatePanel 依赖于服务端控件ScriptManager和客户端脚本对象PageRequestManager。

    Submit 被页面上的PageRequestManager截获, PageRequestManager会判断是传统提交还是异步提交。如果是异步提交,就使用XmlHttpRequest来提交,提交的内容除了传统提交的form外,还包含一个自定义的http header “x-myajax”来通知server端这是一个异步提交,然后和传统提交一样走完完整的生命周期。

    Init

    Load State

    Process Postback

    Load

    Postback Events

    Save State

    PreRender

    Render

    UnLoad

    在Render阶段,ScriptManager如果看到http header “x-myajax”标记,就会替换掉Page对象的输出方式,输出需要刷新的UpdatePanel中的内容和一些ViewState。在收到服务端的处理结果之后,PageRequestManager会通过操作DOM对象来替换需要更新的代码片段。需要执行的JavaScript也会在此时传送到客户端执行。最后客户端的XMLHttpRequest对象收到了这部分信息,并在不知不觉悄悄地更新了UpatePanel中定义的内容。

    异步请求的内容包含如下数据,与整页更新相比没有任何减少

    – 采集Form中所有<input />并发送

    – 包含ViewState

    应该尽可能减少客户端接受到的数据大小,可以使用如下方式:

    – 使用多个UpdatePanel包含多个部分

    – UpdateMode尽量不要设为Always

  • 相关阅读:
    oracle补丁升级
    Vmware虚拟机设置静态IP地址
    VMware 虚拟机安装
    中国城市json
    安装vue
    中国省份城市数据
    ajax表单提交post(错误400) 序列化表单(post表单转换json(序列化))
    自动搭建ssm项目
    小米root
    程序员职业规划(一篇来自"阿里Java工程师"对工作3年左右程序员的职业建议和应该掌握的职业技能)
  • 原文地址:https://www.cnblogs.com/EricaMIN1987_IT/p/1944734.html
Copyright © 2011-2022 走看看