2011-01-28 60 views
0

有沒有方法可以在加載之前停止等待usercontrol加載的主頁?停止等待usercontrol的頁面以完成加載

我有一個usercontrolt必須做很多數據庫調用,這可能需要幾秒鐘,使頁面加載緩慢。 理想情況下,我希望主頁面馬上加載,然後在用戶控件內容準備就緒時顯示。

我想不出一種做法!

幫助!

貝克斯

回答

0

是的,有一種方法。它被稱爲AJAX(http://en.wikipedia.org/wiki/AJAX)。儘管在單個請求中沒有辦法做到這一點。

此外,您可以使數據庫調用異步(Begin/End方法)並在控件生命週期的某個早期階段啓動調用,然後在稍後階段結束請求。通過這種方式,ASP.NET可以繼續處理頁面,同時等待數據庫作出響應。根據您的邏輯工作流程和計時,這可以將加載時間縮短一半或者什麼也不做。

+0

異步不會提高頁面加載時間。事實上,異步並不會改善加載時間,它會做什麼(如果正確完成,包括使頁面異步),它會釋放請求線程(使用I/O完成端口),以便IIS可以使用它來響應其他請求從而提高網站的吞吐量。發出原始請求的瀏覽器仍然會等待響應,這將花費當前的時間。 – 2011-01-28 11:42:09

+0

您指的是異步頁面。我指的是異步數據庫請求,這些是完全不同的事情。如果數據庫請求需要例如1秒鐘並且可以在頁面生命週期的開始時進行,並且如果頁面上的其他控件的生命週期的其他階段需要一秒鐘,則可以稍後從數據庫查詢中收集異步結果生命週期並將加載時間縮短一半。當然,大多數代碼不符合這些要求。 – Stilgar 2011-01-29 17:57:20

0

不是。除非您使用ajax來請求需要很長時間才能生成的內容。 您必須明白,控件和頁面都是由服務器處理的,唯一返回給瀏覽器的是html。在整個頁面(包括所有控件)都被處理之前,沒有任何內容被髮送到瀏覽器。

0

你的問題的簡短答案以及你想要的東西如何工作是沒有的。 「頁面」是一個服務器端的事情,它需要在瀏覽器看到它之前完成處理。

但是,爲了實現您要查找的內容,您可以在瀏覽器(AJAX)中使用JavaScript對服務器進行另一次調用,然後該服務器僅將該數據作爲JSON數組或XML發回文件,然後你必須解析和構造HTML以顯示它。或者你的迴應可能是你可以直接插入DOM的html。

獲得您想要的響應的一種簡單方法是構建另一個託管此控件的頁面,並且頁面的標記除控件本身外沒有其他html。您可以對此頁面進行AJAX調用,並且響應將是控件生成的html。你把這個html插入到你想要的DOM中。當然,在您的AJAX調用中,您還需要發送其他頁面所需的任何參數,以便控件可以完成這一操作。

恐怕,如果您是AJAX和DOM的新手,那麼所有這些聽起來都會非常複雜。

0

查看Ajax Control Toolkit中的DynamicPopulate控件。

您可以在這裏找到一個樣本:DynamicPopulate