2

我对 UpdatePanel 的了解是

  1. 他们使用 Ajax 请求异步工作。
  2. 他们执行部分回发。

现在最近我也在使用$.ajax()jQuery 的方法处理 Ajax 请求,当我发现我发出的 Ajax 请求和 UpdatePanel 发出的 Ajax 请求有一些不同之处时

  1. UpdatePanel 的 Ajax 请求执行整个页面生命周期,但我的 Ajax 请求仅调用我提供的要调用的特定方法。
  2. UpdatePanel 调用的方法不需要标记为 WebMethod,但我的 Ajax 请求调用的方法必须是 WebMethod。

我在网上搜索以获取有关这些差异的详细信息,但没有找到任何资源,有人可以告诉我我和 UpdatePanel 进行的 Ajax 调用之间有什么区别,或者更具体地说,这些区别是如何产生的以及 UpdatePanel 使用了哪些特殊技巧来实现那个功能?

4

2 回答 2

3

我喜欢这个问题队友+1

基本上,邪恶的 UpdatePanel 是万恶之源。可悲的是 =(。幕后的更新面板引发了对服务器的异步回发,但要完全了解发生了什么,您需要了解UpdatePanel 目标

UpdatePanel 旨在与 ASP.Net Web 表单一起使用,这些控件必须经过 whoooole ASP.Net 页面生命周期才能正常工作,因此,它们需要whoooole 页面 ViewState。因此,每次您使用 UpdatePanel 执行回发时,即使您只想部分呈现页面的一小部分,整个页面视图状态也会来回发送到服务器......很烂。微软为什么要创造这个怪物?我认为这是因为早在 5 到 6 年前(或更长时间),AJAX 还没有像今天这样流行。另一个原因是微软希望提供一个框架来以简单的方式编写 AJAX 调用,但又不失 Web 控件的强大功能。

因此,考虑到这一点,AJAX 调用和 AJAX 调用之间的区别UpdatePanel很简单:

AJAX 调用仅发送服务器方法所需的数据,并且只返回所需的数据。使用纯 AJAX 调用的性能令人印象深刻。

但是我的 Ajax 请求调用的方法必须是 WebMethod。

这部分是正确的,我的意思是有不同的方法可以从服务器公开方法:

  • 使用传统的 Web 服务 - 脚本服务 (ASMX)

  • 使用 PageMethods(ASPX 页面上的静态方法)

  • 公开 WCF 服务

  • 公开 WCF REST 服务

  • 使用 WEB API

  • 使用 MVC 控制器的操作

  • 使用自定义 HttpHandlers 返回特定的内容类型,如 JSON

  • ETC

最后结果是一样的,无论你使用什么方法来暴露服务器方法,当你使用纯 AJAX 调用来使用它们时,如果你使用 Web 表单,你将不得不面对以下问题:

如果您想使用纯 AJAX 调用,那么您应该考虑迁移到 MVC,因为在 Web 表单中您将失去 Web 控件的功能,换句话说,您的开发会更加困难

于 2012-08-01T13:42:29.313 回答
0

他们执行部分回发。

不,更新面板执行完整的回发,它们只是在页面上执行部分更新。

UpdatePanel 的 Ajax 请求执行整个页面生命周期,但我的 Ajax 请求仅调用我提供的要调用的特定方法。

准确地说,更新面板执行完整的回发。效率极低。

于 2012-08-01T13:43:00.233 回答