使用Ajax从服务器发送进程消息到客户端
问题描述:
我正在使用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”的一些实施。
谢谢。
答
这并不那么容易......你不能主动发送一些东西从服务器到客户端。只有客户端可以请求查询状态。
现在您已经有一个请求正在运行(点击按钮)。但是只有在保存了100个文件后才能完成。理论上讲,你可以通过写入响应来发送一小部分数据,然后刷新它以确保数据的传输。我从来没有尝试过,我不知道任何可以处理这种响应的Ajax客户端。
我会做的是:将当前状态保存在ASP.NET会话对象中,然后在计时器上发出另一个Ajax请求以每X秒查询一次状态。请注意,按钮上的请求仍然在运行(这可能会导致问题)。您可能想要触发异步操作。
当你说“保存100多个文件”时,你的意思是你的页面上传了100个文件? – 2009-07-04 17:08:24