我是一位经验丰富的Web开发人员,负责几个不同的Web技术堆栈。我目前在.Net工作,我对Partial Postback感到好奇。
我理解Partial Postback的功能是什么以及如何以编程方式使用它,但我不喜欢使用我不理解的技术,如何实现部分回发。
我理解HTTP请求和异步请求,让我对Partial Postback感到困惑的是它似乎都是。
也许我只是遗漏了一些东西,但在我看来,Partial Request同时执行这两项操作,首先启动异步POST请求,但浏览器似乎知道并且活动指示器开始旋转,这通常只发生在HTTP请求页面渲染。
那么,任何人都可以了解微软如何在HTTP请求级别实施部分回发?
答案 0 :(得分:26)
我知道这个问题已经得到解答,但我不同意答案......
我个人认为,“部分回发”一词在上述文章"How to write your own partial postback in ASP.NET 2.0"中被滥用。在本文中,作者向您展示了如何对HttpHandler进行AJAX调用。 这与在ASP.NET中进行PartialPostback调用的过程完全不同。
我相信这个'差异'在(上述答案)的思考后评论中被忽略了:
“ UpdatePanel不仅刷新它包含的控件,还会在处理后使用从服务器获取的值更新ViewState值。”
虽然这个最终评论有点难以捉摸 - 用一个ASP.NET UpdatePanel来说明“部分回发”的定义......它没有解释部分回发是什么(再一次,这是一个非常不同的过程而不是普通的AJAX调用。)
详细说明......
MICROSOFT ASP.NET AJAX使用UpdatePanel:
在基本级别,Microsoft AJAX通过部分页面回发支持异步请求。部分回发与同步整页回发一样遍历相同的页面生命周期,但只刷新页面上的特定区域或控件 - 从而实现部分页面呈现。 MICROSOFT ASP.NET AJAX依赖于拦截器模式来生成和处理部分回发。在初始化时,MICROSOFT ASP.NET AJAX JavaScript库添加了一组客户端事件处理程序来拦截通常会启动整页回发的调用。处理程序函数拦截来自已注册控件的回发调用,生成部分回发,处理响应内容,然后异步更新页面内容。 由于MICROSOFT ASP.NET AJAX构建于现有的ASP.NET回发体系结构之上,因此它利用事件验证并在整个部分回发过程中维护视图状态。您的标准“正常”AJAX调用不会执行这些操作!
稍等一下......
MICROSOFT ASP.NET AJAX使用“正常”AJAX来“ ajax-ify ”它的页面并实现部分更新......并且这样做,它交易和放大在一次通话中管理视图状态MULTIPLE次。 这就是为什么它被称为'部分回发'。随后,这也是他们最初将UpdatePanel描述为使您的网页“ ajaxy ”的方法的原因(因为它与使用AJAX不同)。
NORMAL AJAX通话:
在浏览器中使用JavaScript启动的异步请求会创建与服务器的新连接。是的......这可能包括对页面的有状态回发,但也包括对当前页面之外的资源的无状态请求。 但是,在异步回发的情况下,只有服务器上当前页面需要处理的信息才会被传递到请求中(并且您可以控制它)。含义,内容整个页面不需要提交,也不需要管理视图状态。嵌入到页面生命周期中的(本机)开销可以被绕过。同时,异步回发仅调用与处理CURRENT REQUEST相关联的服务器事件。 这就是正常的AJAX比PARTIAL POSTBACKS快得多的原因!
这些要点说明......
不仅'部分回发'是什么......但为什么'部分回发'和'ajax'之间存在差异。这就是为什么这是一个更好的答案。
答案 1 :(得分:5)
来自How to write your own partial postback in ASP.NET 2.0:
部分后置构造的核心是XMLHttpRequest,一个DOM API。它可以在Web浏览器脚本语言(如JavaScript)中使用,直接将HTTP请求发送到Web服务器,而无需重新加载整个页面并在脚本语言中再次处理来自服务器的响应。然后,这些数据以XML的形式用于操作客户端的页面元素。
单击ASPX页面上的按钮后,将使用XMLHttpRequest API发出客户端HTTP请求。此请求由Web服务器上的HttpHandler处理。 HttpHandler接收请求,处理它,并将响应发送回ASPX页面上的XMLHttp对象。 XMLHttp对象反过来使用响应并呈现适当的UI更改,而浏览器不必对页面进行完全刷新。
UpdatePanel不仅刷新它包含的控件,还会在处理后使用从服务器获取的值更新ViewState值。
答案 2 :(得分:1)