是否有理由更喜欢 jQuery.Ajax 而不是 asp.net UpdatePanel?

问题描述 投票:0回答:5

如果我正在开发一个 asp.Net 应用程序,是否在某些情况下我应该忘记 MS Ajax UpdatePanels 而更喜欢使用 jQuery.Ajax 来更新页面的某些部分?

谢谢你

asp.net jquery updatepanel
5个回答
10
投票

是的,事实上,您应该几乎总是更喜欢使用您自己的(或 jQuery 的)ajax 功能。

很多与 MS Ajax UpdatePanel 相关的开销(它执行完整的回发,然后更新页面上更改的元素),因此启用 AJAX 的网站中的优秀功能 - 响应式,连续性等 - 几乎完全丢失(恕我直言)。您几乎无法控制通过电缆实际提交的内容、返回的内容以及返回给客户端后如何处理这些内容。

另一方面,使用 jQuery Ajax,您可以获得完全且即时的控制,您可以根据需要发出轻量(或重)请求,并且让我们面对现实 - API 并不比这更难使用更新面板的。

考虑到这一点,在某些情况下 UpdatePanel 仍然很好,甚至更好。特别是在 ASP.NET WebForms 中,如果用户无法使用 JavaScript,则以优雅降级的方式仅返回页面的一部分可能会很棘手,并且对于快速的“拖放”开发风格,确实存在jQuery 无法与之竞争。 (是否喜欢拖放开发完全是另一个讨论...)


2
投票

当然, 恕我直言,您应该更喜欢 jQuery 而不是标准的 ASP.Net 更新面板。 原因(主要)是性能,当您使用 jQuery.ajax 发布一些数据时,您只发布服务器需要理解该帖子的内容。 这通常是 1-2 个文本参数。

当您使用更新面板执行相同的操作时,整个页面会在后台走到服务器,然后整个页面返回并渲染该区域。

如果你使用 jQuery,你可以在服务器上创建一个 ashx 页面,这个页面没有常规 Webform 的页面加载和生命周期,而且非常轻量级。


2
投票

我想说,与 ASP.NET AJAX UpdatePanel 相比,您绝对应该更喜欢 jQuery AJAX。如果您查看 ASP.NET AJAX 站点,确实没有提及 ASP.NET AJAX 和/或 UpdatePanel...但有很多提及 jQuery。事实上,微软似乎更青睐 ASP.NET 开发人员使用 jQuery 作为客户端 JavaScript AJAX 框架,而不是 UpdatePanel 和相关的 ASP.NET AJAX 控件。

他们仍然提供 AJAX Control Toolkit 的链接,但是有这么多 jQuery 插件,为什么你还需要该工具包?

UpdatePanel 速度较慢且体积较大——使用 jQuery AJAX。


1
投票

正如其他人所说,MS-Ajax 和 UpdatePanel 的性能很差 - 有时甚至无法使用。正如其他人指出的那样,ajax 回调应该小而轻,但很重,因为它们还包含完整的 ViewState。

除了这些问题之外,我还发现了 MS-Ajax 的其他一些缺点:

  1. MS 生成的 JavaScript 包含大量开销。我认为,他们内置了大量类型检查和变量检查,目的是使他们的 javascript 更加类型安全。这种开销会显着减慢浏览器端处理速度 - 特别是当那些生成的 javascript 函数被重复/递归调用时(如某些第 3 方控件的情况)。
  2. ASPX 代码隐藏变得更加复杂且难以维护,因为在页面的初始加载以及每个 ajax 回调中都会执行相同的页面生命周期。与所有复杂的代码一样,熟练的开发人员和良好的代码注释可以克服这个问题 - 但这仍然是一个需要考虑的缺点。

最后一点:MS-Ajax 和 UpdatePanel 的一个好处是,您可以摆脱 90% 的 javascript 无知,但仍然可以编写它们。 “传统”ajax 涉及的 javascript 编码比 MS-Ajax 多得多。


1
投票

如果您对整个 ASP.Net 回发方案感到满意,那么坚持此类控件的一个优点是(大多数时候)它们可以保护您免受回发等副作用的影响。但在这种特定情况下,它会带来一定的成本:每个 AJAX 请求(其中将包括视图状态)都有一个完整的回发,与直接的 AJAX 请求相比,这可能会影响性能,参见:

链接

我也不确定它是否可以很好地处理跨站点请求(JSONP 等),所以这是两个需要考虑的警告。

© www.soinside.com 2019 - 2024. All rights reserved.