如何在部分更新期间向用户发送状态更新

时间:2009-05-23 22:41:58

标签: c# asp.net asp.net-ajax

我有以下内容:

  1. 母版页
  2. StatusDisplay - 在beginRequest到endRequest期间显示PartialPostback上的MS AJAX异常或更新Happenning的Ascx用户控件
  3. 具有多级.ascx Web用户控件的页面,其中一些是动态加载的
  4. 目前,在更新面板中发生回发时,StatusDisplay会显示“正在更新请求..”以及最后的例外情况。

    我还希望发送特定的状态更新,例如此StatusDisplay应显示的不同位置的“已添加客户”。目前,不知道其他控件中是否存在StatusDisplay,我希望保持这种状态。

    怎么做?

1 个答案:

答案 0 :(得分:1)

使用一种名为reverse ajax的技术。反向Ajax允许服务器在内容可用时立即将内容推送到浏览器,这通常由IFrame,响应刷新和用于处理回调的常用javascript函数的组合实现

easy incremental status updates for long requests是关于此主题的精彩文章。

此处的示例实现依赖于假设其创建和刷新到客户端的javascript已经附加到父窗口对象的javascript回调函数“UpdateProgress”(因为调用是在IFrame中进行的)。由于任务长时间运行,代码执行刷新到客户端并执行执行任何操作的javascript函数。

protected void UpdateProgress(int PercentComplete, string Message)
{
  // Write out the parent script callback.
  Response.Write(String.Format(
    "<script>parent.UpdateProgress({0}, '{1}');</script>", 
    PercentComplete, Message));
  // To be sure the response isn't buffered on the server.
  Response.Flush();
}