【发布时间】:2014-06-20 06:26:18
【问题描述】:
是否有一种简单的方法可以发出 ASP.NET AJAX 请求(来自客户端)以更新更新面板,而无需将整个页面从客户端发送到服务器(可能通过手动调用一些内部 MS javascript 来启动异步更新请求)?
背景:
我们有一个非常简单的 Intranet 页面,它只显示一些状态(因此它不需要维护视图和控制状态)。它需要非常频繁地刷新(大约每秒一次)。
为了简单起见,我通过 Timer 和 UpdatePanel 实现了这一点:
<asp:Timer ID="Timer" runat="server" Interval="1000" />
<asp:UpdatePanel ID="UpdatePanel" runat="server" >
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer" EventName="Tick" />
</Triggers>
<ContentTemplate>
<%-- content here --%>
</ContentTemplate>
</asp:UpdatePanel>
这很好用,但是远程客户端更新速度较慢,有时会“阻塞”(浏览器加载页面很长时间)。
我通过从页面中完全剥离视图和控件状态(重写 Page 类并停止存储到视图状态元素)并主要通过配置 IIS 动态内容压缩来部分解决了这个问题。这解决了大部分问题 - 因为从服务器到客户端的使用带宽迅速下降(因此更新更快)。
从客户端到服务器的流量仍然相当可观——因为基本上客户端将页面发送回服务器;并且它还以未压缩的方式发送它。我们不需要处理任何控制事件或状态更改 - 所以我们不需要服务器上的页面。
我是否有任何选择如何向服务器发送快速 AJAX 请求以请求 UpdatePanel 更新(可能我需要调用一些 MS 内部 javascript 方法来启动异步请求 - 我只是不知道如何找到它并且叫它)。
【问题讨论】:
标签: javascript asp.net ajax updatepanel