對于ASP.NET頁面加載時間長的,可以在客戶端的瀏覽器中顯示進度條,顯示頁面正在加載,那么asp.net 生成靜態頁時的進度條顯示怎么實現呢?下面就讓錯新技術頻道小編帶你來了解!
而我們用模擬的話,只需要讓線程延遲執行就可以了。比如下面的代碼:
顯示結果:
時間都不一樣,如果沒有讓線程延遲,那么這里的時間都是一樣的。而我們需要做的僅僅是:
?
?
別忘記了引入命名空間:
?
?
而且輸出的時候是一次性就全部輸出的,并不是每隔一秒就輸出一行(是可以實現的,后面會講到)。如果按那樣寫每隔一秒就輸出一行該有多好啊。根據這個原理,如果只需要制作生成靜態時表明正在生成的過程,而不需要進度顯示,那么可以這樣:
?
?
在Button按鈕的添加一個
?
?
表明在按下按鈕的同時觸發客戶端事件,而客戶端就是創建一個等待中的div。效果如下:
creatload函數代碼如下:
?
?
執行完后這個div就自動消失了。
有了上面的鋪墊,現在開始進入正題,我們肯定是要實現每隔一秒就輸出一行的這種效果,而這其實很容易實現,只要讓頁面不緩沖就可以了再配合線程延遲就可以做到了。在Page中關閉緩沖區:
Buffer="false"
接下來,我們只要找一個進度條效果,再統計出需要生成靜態頁的文章總數,根據當前生成的文章為第幾條記錄,算出已經執行到總數的百分之幾。再實時調用一次js函數實現進度塊的變化,就OK了。
關于進度條,大家可以上網隨便找一個,我用了這里的一個進度條效果,因為簡單。http://www.jb51.net/article/18177.htm
當然,這個進度條并不適合我們現在的具體使用,關鍵部分的js需要修改如下:
?
?
以下則是關鍵的c#后臺代碼的關鍵,按照上面這個函數,我們主要根據執行到的記錄,輸出類似以下的代碼:
?
?
按照這樣的輸出,輸出這些字符必須在js,css,以及相關html代碼之后才可以輸出,否則在頭部就輸出的話,肯定不行。因為前面都沒有這個函數,就執行到這個函數。(你想用Literal控件去控制其輸出位置?你可以自己試下,有什么結果?)所以,索性我們把相關進度條的代碼一次性輸出,可以把其做成一個html文件,這個也是在網上看到一篇文章的時候的做法。名為bar.htm
?
?
?
?
?
?
?
?
?
?
?
?
?
?
而我們用來模擬的代碼如下:
?
?
?
?
FileObj.ReadFile是讀取這個htm文件,這個函數及其相關文件操作類,大家可以在這篇文章中得到!http://www.jb51.net/article/15125.htm加上條件語句
是因為bar.htm在讀取出來之后,只需要輸出一次就可以了。最終效果如下:
?
通過錯新技術頻道小編介紹的asp.net 生成靜態頁時的進度條顯示,相信大家都有了一定的了解,如需了解更多的相關資訊,請繼續關注錯新技術頻道吧!
新聞熱點
疑難解答
圖片精選