2009-01-16 190 views
1

我試圖爲我的開發人員遇到的問題找到答案。我自己也不太清楚......ASP.NET異步調用的問題,等待處理程序返回

我們在C#中使用ASP.NET。

當用戶按下頁面上的按鈕時,我們調用hander將會話變量保存爲表單的當前視圖狀態(使用的一些ID)。

然後,我們調用具有其他功能的GreyBox窗口。

因爲這是異步的,所以greybox不會等待處理程序作出響應。

在許多情況下,在會話變量保存到視圖狀態之前加載灰盒,在這種情況下,灰盒沒有必要的ID。

在本地主機上,速度很快,我們從未意識到問題。在生產中,這是一個問題。

這裏的正確解決方案是什麼?

回答

4

向服務器保存會話的異步調用將返回對客戶端的響應。直到您從服務器獲得成功回覆後才能啓動greybox。如果只有一件事導致您的形式異步回發,那麼你可以這樣做插入的答覆:

<script type="text/javascript"> 
    //<![CDATA[ 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    prm.add_endRequest(endRequest); 
    function endRequest(sender, e) { 
     // Do stuff 
    } 
    //]]> 
</script> 

對於更復雜的場景中看到article on MSDN在這個問題上。

0

您需要確保您的附加代碼正在AJAX請求的回調方法中運行。

如果手動調用Web服務或頁面方法Sys.Net.WebServiceProxy.invoke方法接受一個回調:http://msdn.microsoft.com/en-au/library/bb383814.aspx

我有一種感覺,如果你正在使用一個UpdatePanel執行AJAX是大衛建議PageRequestManager只能請求。