我在ASP.NET/C#中有一個簡單的網頁。目前爲了完全呈現數據,我需要調用在後臺線程上運行的代碼塊,並可能需要幾分鐘才能完成。我已經明白了這一點(使用頁面聲明中的異步屬性)來執行,並在完成後用html返回。我希望它能讓我立即返回某種類型的「加載頁面」,然後在後臺工作完成後更新該頁面。現在,當後臺工作正在處理時,我在頁面上什麼都沒有得到。任何想法,最好的方式或聰明的方式來做到這一點將不勝感激!'正在加載'異步調用網頁
感謝,
西格
我在ASP.NET/C#中有一個簡單的網頁。目前爲了完全呈現數據,我需要調用在後臺線程上運行的代碼塊,並可能需要幾分鐘才能完成。我已經明白了這一點(使用頁面聲明中的異步屬性)來執行,並在完成後用html返回。我希望它能讓我立即返回某種類型的「加載頁面」,然後在後臺工作完成後更新該頁面。現在,當後臺工作正在處理時,我在頁面上什麼都沒有得到。任何想法,最好的方式或聰明的方式來做到這一點將不勝感激!'正在加載'異步調用網頁
感謝,
西格
有來實現你的描述使用Ajax什麼,但很多方面,如果你想保持它非常簡單,你可以簡單地Flush()
之前,你的一些加載屏幕響應啓動長時間運行的任務:
<div>
Loading..
<% Response.Flush(); %>
<% System.Threading.Thread.Sleep(5000); %>
Done!
</div>
你想要什麼叫做HTTP Server Push或HTTP流媒體或長輪詢。取決於如何完成。
有很多在網絡上的例子,文章還解釋了深入的問題。我首先研究這些。
您也可以看看這個HTTP流...
Cross-browser implementation of "HTTP Streaming" (push) AJAX pattern
有到有一個偉大的介紹文章的鏈接SO問題。
或者這一個與長輪詢
How do I implement basic "Long Polling"?
或
https://stackoverflow.com/questions/tagged/long-polling
希望這有助於的一個例子。
我同意上述發佈的評論。
然而,我會和有但使用ashx(處理程序)作爲一個單獨的頁面實現「處理器」,因爲這些真的很簡單,從JavaScript調用和輪詢,你只需編寫進程請求事件饋送東西進入響應流。
我很想在我的網站上向您展示一個示例,但我的主機決定在我們的網站上運行一週,而他們在服務器上更新.net(您可以想象我對此並不特別滿意)。
雖然本質上我來說,我有一個依賴於數據從一個頁面: 英國廣播公司 谷歌 亞馬遜 的YouTube 一些其他的隨機位置。
該頁面返回給用戶,並在頁面上各個控件然後進行Ajax調用回服務器及其零部件。
反饋數據將被加載到的標籤的默認內容是一個簡單的動畫gif圖像,看起來非常像flash或silverlight加載循環。
數據返回後,gif被服務器饋送的內容替換。
這意味着客戶端看到「正在加載」並且服務器正在忙於處理客戶端需要的所有內容(看起來似乎是同步的)。
這是一個乾淨的用戶體驗,代碼非常簡單。
當我看着如何使用silverlight進行文件上傳時,我絆倒了這個想法。
基本概念:
希望這有助於:)
嘗試,一個和喜歡這個主意,因爲它似乎很好的和簡單的。然而,雖然它最初似乎起作用,但最終失敗了,因爲它無法保存會話。 – Sieg 2010-05-14 15:59:06