SharePoint物件模型與ViewState

來源:互聯網
上載者:User
ViewState對於大家來說,應該是一點都不陌生的。雖然在ASP.NET中到處可見它的蹤跡,但是,我卻很少使用它。
近日,在開發WebPart時,為了避免每一次重新整理頁面都要重新擷取同一個SPList,因此,我使用了ViewState儲存
SPList對象,但是很不幸的是,編譯時間完全正常,但是到使用時,卻很不給面子的一直彈“發生意外錯誤”。對於這個問題的解決,我經曆了如下幾步,希望對大家有所協助:
Step1: 我跟蹤調試WebPart,直到該WebPart的PreRender事件函數執行完畢,就會導致頁面意外錯誤,而且無法再跟蹤到
           Render中(因為My Code中沒有重寫SaveViewState函數)。
           聯想到PreRender事件之後,應該執行的是儲存ViewState(即SaveState),而我的WebPart中只有SPList這裡用了
           ViewState,那問題多半出在這裡了,但是,具體是什麼錯呢?沒轍,因為我跟不進去。
Step2:  預設情況下,SharePoint出錯顯示的都是友好資訊,而且友好到您基本上無法明白到底出什麼錯。
            很鬱悶的是,一般情況下,我建一個網站,都會更改web.config ,讓它顯示詳細的錯誤資訊,但是,部署webpart
            的這個網站,我偏偏沒有更改!
Step3:   更改web.config,讓SharePoint能顯示更詳細的錯誤資訊:
             1、 將<SafeMode ... CallStack="false" ...... AllowPageLevelTrace="false">中的CallStack和AllowPageLevelTrace的屬性設定為“true”。
             2、<customErrors mode="On" />的mode改為"Off"
Step4:  再次運行,就得到詳細的錯誤資訊:SPList沒有被標記為可序列化!
------------------------
至此,才明白出錯以及為什麼跟不進Render方法的原因,原來是要儲存SPList時,無法將對象序列化。
註:ViewState儲存的對象需要是可序列化的。
------------------------
這麼一個錯誤,道道還是不少,希望對大家有用~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.