AJax技术

ASP.NET AJAX:UpdatePanel提示和技巧(4)

字号+ 作者:H5之家 来源:H5之家 2015-11-02 08:23 我要评论( )

目录 更新突出显示 取消 UpdatePanel 更新 多个 UpdatePanel 不使用 UpdatePanel 更新 Web Service != SOAP 和 XML 不论好坏,UpdatePanel 控件都是 ASP.NET AJ

不使用 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 内的控件也 会完成一个正常呈现循环。那是更新该网页一部分的大笔开销。

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

Figure2使用 UpdatePanel 填写“城市”和“州”字段

<asp:UpdatePanel ID=”UpdatePanel1” runat=”server”>
  <ContentTemplate>
   City:<br />
   <asp:TextBox ID=”City” runat=”server” />
   <br /><br />
   State:<br />
   <asp:DropDownList ID=”Region” runat=”server”>
     <asp:ListItem Value=”AL”>Alabama</asp:ListItem>
     <asp:ListItem Value=”AK”>Alaska</asp:ListItem>
     <asp:ListItem Value=”AZ”>Arizona</asp:ListItem>
      ...
     <asp:ListItem Value=”WV”>West Virginia</asp:ListItem>
     <asp:ListItem Value=”WI”>Wisconsin</asp:ListItem>
     <asp:ListItem Value=”WY”>Wyoming</asp:ListItem>
   </asp:DropDownList>
   <br /><br />
   Zip Code:<br />
   <asp:TextBox ID=”ZipCode” runat=”server” />&nbsp;
   <asp:Button ID=”AutofillButton” Text=”Autofill”
    OnClick=”GetCityAndState” runat=”server” />
  </ContentTemplate>
</asp:UpdatePanel>

图 3城市、州和邮政编码 UI

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JQuery实现Ajax加载图片的方法

    JQuery实现Ajax加载图片的方法

    2016-02-24 17:01

  • 判断用户是不是为ajax请求

    判断用户是不是为ajax请求

    2016-02-24 17:00

  • Ajax与WEB开发 by alixixi.com

    Ajax与WEB开发 by alixixi.com

    2016-02-11 11:02

  • jQuery.ajax()的相关参数及使用

    jQuery.ajax()的相关参数及使用

    2016-02-08 16:00

网友点评
i