2009-07-04 50 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秒查詢一次狀態。請注意,按鈕上的請求仍然在運行(這可能會導致問題)。您可能想要觸發異步操作。

相關問題