ASP.NET UpdatePanel更新

开发 后端
本文介绍ASP.NET UpdatePanel更新,具有太多视图状态的页面会降低性能,并且具有太多视图状态的页面在 ASP.NET 应用程序中都太常见。

多个 UpdatePanel

一个页面可以承载几个UpdatePanel。默认情况下,当一个页面上的 UpdatePanel更新时,该页面的其他 UpdatePanel也会更新。有时候这是您想要的,但多半您并不需要每个 UpdatePanel更新来响应其他 UpdatePanel。
通过将页面上每个 UpdatePanel 控件的 UpdateMode 属性设置为 Conditional,您可以选择更新哪个 UpdatePanel 实例(及更新的时间)。然后,在 UpdatePanel更新和调用服务端事件处理程序的时候,请调用您要更新的其他面板上的 UpdatePanel.Update。这样可以通过减少呈现的控件的数量来减轻服务器的负载,而且它还减少了响应中的数据量,因为不进行更新的 UpdatePanel 不会将任何数据添加到响应中。

不使用 UpdatePanel更新

AJAX 不仅可以创建更好的用户体验,它还可以提供更高效的网络通信。当发生传统的 ASP.NET 回发时,Web 窗体中包括视图状态在内的所有数据,都会传输到回发中的服务器。视图状态是 ASP.NET 页面,尤其是使用 DataGrid 和 GridView 控件的 ASP.NET 页面似乎会反应迟缓的一个原因。具有太多视图状态的页面会降低性能,并且具有太多视图状态的页面在 ASP.NET 应用程序中都太常见。

用 AJAX 回调替代 ASP.NET 回发的好处之一是能正确完成,AJAX 回调仅传送需要被传送的数据。这意味着,它们不必将视图状态包括在该传输中。

当您使用 UpdatePanel 在一个页面上执行无闪烁更新时,您可能会认为您在进行高效构建。毕竟,UpdatePanel 使用的是 AJAX,不是吗?不幸的是,如果您在 UpdatePanel更新时检验一下网络中的通信,您会发现您根本就没有保存什么东西,至少是在发送的时候没有保存。通常在回发期间传送到服务器的视图状态数据(与其他数据)也会在 UpdatePanel 回调期间传送。事实上,来自 UpdatePanel 的异步 XML-HTTP 请求中所增长的数据几乎与在标准 ASP .NET 回发中增长的数据相同。下面是有关 ASP.NET AJAX 不可告人的秘密:UpdatePanel 虽易于使用,但是通信效率不高。

几乎没有什么办法可让您提高 UpdatePanel 的效率,但是您可以放弃使用 UpdatePanel,并转而使用 ASP.NET AJAX 的其他功能来更新页面内容,它不仅同样流畅,而且更加高效。它只需要多一点点力气,但是***的结果往往让人觉得是值得付出的,因为您可以大大降低在客户端与服务器之间传输的数据量。

您还可以减少服务器上的负载。当 UpdatePanel 回调到服务器时,被回调定为目标的页面会完成几乎整个生命周期 — 该页面会被实例化,该页面中的控件也会被实例化,并且 UpdatePanel 内的控件也会完成一个正常呈现循环。那是更新该网页一部分的大笔开销。

作为示例,请考虑页面段。它提供了一个允许用户键入邮政编码的简单 UI,并且单击按钮就可以用城市和州来初始化城市和州字段。所有的控件都承载在 UpdatePanel 中,因此 Button 控件的回发被转换为异步回调,并且事件处理程序 (GetCityAndState) 会被调用到该回调内部的服务器上。GetCityAndState(未显示代码)从邮政编码文本框中读取邮政编码,将其转换成城市和州,并相应地初始化表示城市和州的 TextBox 和 DropDownList。由于这些都发生在 UpdatePanel 内部,所以更新非常顺畅,并且无闪烁。

【编辑推荐】

  1. 浅析ASP.NET Web 安全性
  2. ASP.NET的Session State
  3. 浅析IsPostBack属性ASP.NET
  4. ASP.NET构架与安全机制
  5. 概述ASP.NET水晶报表
责任编辑:佚名 来源: 百度空间
相关推荐

2009-07-29 13:50:26

UpdatePanelASP.NET

2009-07-22 13:08:55

拯救UpdatePanASP.NET MVC

2009-07-21 09:43:36

调用UpdatePanASP.NET

2009-07-21 09:18:02

UpdatePanelASP.NET AJA

2009-08-05 17:58:24

UpdatePanel

2009-04-01 12:00:43

ASP.NETMVC

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入门教程

2009-08-10 13:32:15

ASP.NET TimASP.NET组件设计

2009-07-29 17:11:25

ASP.NET ISA

2009-07-29 16:08:07

ASP和ASP.NET

2009-08-03 13:38:18

ASP.NET编程模型

2009-08-03 17:35:07

ASP.NET WebASP.NET编程工具

2009-07-28 09:02:32

asp.net aja

2009-12-02 09:07:45

ASP.NET 4.0

2009-07-23 14:17:41

2009-07-22 16:17:39

ASP.NET AJA

2009-07-29 10:02:49

ASP.NET上传
点赞
收藏

51CTO技术栈公众号