2011-03-20 76 views
4

我正在寫一個應用程序,用戶可以在其中註冊。雖然註冊人可以選擇多個選項,並根據這些註冊人字段可見或不可見,並且是否需要。 我想出了一個想法,即所有字段將在updatePanel中,當用戶更改註冊選項時,我將設置服務器端這些字段的可見性。更新面板工作非常慢

它的工作原理,但令人難以置信的慢,什麼更多的FF我已經給定的錯誤:

The state information is invalid for this page and might be corrupted

3複選框與其他領域都在UpdatePanel

每個字段的DL標籤與runat="server>

我不得不這樣做,因爲「必需」選項的原因我簡單地添加css類到這個dl(需要在JavaScript驗證。如果字段應該是可見的我設置可見=「假」給定的dl,然後該字段例如名字帶標題等在回傳後不可見。

我做錯了什麼?爲什麼需要這麼長時間(在本地主機~4分鐘),並在Firefox中它並沒有真正的工作(當我使用調試我認爲該過程完成沒有錯誤的FF,我不明白,在所有:)

如果更新面板是如此薄弱的改變能見度和向所有dls添加所需類別的其他選擇。邏輯非常複雜,必須對DB進行查詢,這麼簡單的javascript會非常棘手。

感謝您的任何提示,

哦,我使用ASP.Net並不能在這個項目上的升級。

感謝您的幫助, 再見

+2

發佈您的代碼 - 「.aspx」的相關部分和後面的代碼,也許您在那裏做錯了什麼。 – 2011-03-20 08:34:31

+0

您是否在註冊過程中使用電子郵件發送?如果是,那麼與服務器的通信需要一些時間才能完成。 – Aristos 2011-03-20 08:37:23

+0

我會將UpdatePanels全部轉儲到一起。它們帶來了很多開銷 - 回發整個ViewState並導致整個頁面生命週期開始(有時只是頁面的一小部分)。 – Kon 2011-03-20 14:42:15

回答

4

沒有代碼來看看,這裏有一般的東西,這將使緩慢的一個UpdatePanel:被提交的表單數據的

  • 量較大(如視圖狀態)。上傳的數據通常比下載數據慢(取決於連接類型,例如上傳速度比下載慢5倍的家庭連接)。即使你看不到它,頁面上的每個表單域都會回發到服務器(即使它不在UpdatePanel中)。

我建議在Firebug中查看您的請求/響應數據,並確保您的異步請求小於5K並且您的響應不超過20K。

  • 發佈UpdatePanel時正在運行的服務器上的進程較慢。當UpdatePanel被刪除時,代碼如何執行?

  • JavaScript錯誤(您的和微軟的)。這裏是一個已知錯誤和我自己使用的修復的鏈接:http://support.microsoft.com/?kbid=2000262

  • 大規模的DOM操作(聽起來不是這樣的)。

BTW,搜索您所報告的錯誤消息,使許多可能的原因: http://www.google.com/search?aq=f&sourceid=chrome&ie=UTF-8&q=The+state+information+is+invalid+for+this+page+and+might+be+corrupted

一如往常,減少或消除對ViewState的依賴關係......這是許多問題的根源,使差的設計決策。

1

您需要將更新面板屬性更新模式設置爲Conditional而不是Always。限制您放入一個更新面板的控件的數量

0

您可能需要檢查頁面事件等。頁面指令和屬性的研究AutoEventWireup 由於性能是突出顯示的問題,因此您可能也需要檢查。更新面板模式應該是有條件的。 檢查觸發器以及

0

嘗試使用這些屬性值Page directive。這總是在你的頁面的頂部。讓其他物業像以前一樣在那裏。 更新面板不應像您報告的那樣慢。

<%@ Page ViewStateEncryptionMode="Never" EnableViewStateMac="false" 
     EnableEventValidation="false" %> 

我還想補充一點,如果你提到你的數據庫查詢是複雜的,走的是一條很長的時間,那麼問題不在於aspx頁面或更新面板,但隨着你的數據庫查詢。然後,您需要對您的查詢進行概要分析並檢查執行的時間。在這種情況下,要在數據庫級別調整查詢。