2009-07-04 73 views
2

我正在使用UpdatePanel触发一个按钮单击事件,该事件在指定的文件夹上保存了大约100多个文件。 我想要服务器更新客户端有关正在保存的文件的状态和数量。使用Ajax从服务器发送进程消息到客户端

protected void btnSave_Click(...){  
    var filesToSave = GetFilesToSave(); 
    foreach(var fileToSave in filesToSave){ 
    SaveProcessedFile(fileToSave);//It takes almost 30seconds to save a file 
    UpdateStatusOnClient(fileToSave); //Don;t know what should be done here??????????? 
    } 
} 

我要寻找从那里我可以发送所需的消息给客户端,或异步更新标签消息,以便客户端知道进展和文件的状态被保存“UpdateStatusOnClient”的一些实施。

谢谢。

+0

当你说“保存100多个文件”时,你的意思是你的页面上传了100个文件? – 2009-07-04 17:08:24

回答

2

这并不那么容易......你不能主动发送一些东西从服务器到客户端。只有客户端可以请求查询状态。

现在您已经有一个请求正在运行(点击按钮)。但是只有在保存了100个文件后才能完成。理论上讲,你可以通过写入响应来发送一小部分数据,然后刷新它以确保数据的传输。我从来没有尝试过,我不知道任何可以处理这种响应的Ajax客户端。

我会做的是:将当前状态保存在ASP.NET会话对象中,然后在计时器上发出另一个Ajax请求以每X秒查询一次状态。请注意,按钮上的请求仍然在运行(这可能会导致问题)。您可能想要触发异步操作。

相关问题