close

這個討人厭的問題似乎蠻早之前就有存在,通常是postback到不同的頁面時所造成的,.net針對 viewstate 的驗證失敗所丟出的錯誤,

網路上的解法常是設  EnableEventValidation="false"、關閉 ViewState 等等……今天輪到我碰到了…

我的發生狀況是在頁面 A.aspx 中,利用 jqurey ajax 呼叫,載入某個 B.aspx 頁面的資料進來,接著要做任何的postback時(如:按鈕),

就會發生這個錯誤,載入htm網頁就沒問題,我猜大概是作用的頁面中同時擁有二個aspx頁面的viewstate資訊,造成viewstate驗證失敗吧?

 

已經試過關閉viewstate等方法均無效,所以想到還有一個讓viewstate徹底消失的方法,做法如下:

在 A.aspx.cs 中,加入以下二個方法,覆寫頁面中原本存取viewstate的方法,


    protected override object LoadPageStateFromPersistenceMedium()
    {
        return null;
    }


    protected override void SavePageStateToPersistenceMedium(object viewState) { }

這表示,讀取viewstate時,傳回null,儲存viewstate時也無動作,等於是此頁完全放棄viewstate了,

可以看到原始碼中的viewstate完全不見了,比 enableviewstate = false 還乾淨!

(原先這是用來把viewstate放到別的儲存媒體的方法,網路上也有不少教學)

 

成功了~又浪費了2丶3個小時的時間..唉..在趕新專案呀...為何上班時就想不到呢?一下班就想到了...嘖嘖..好忙好忙..

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 brunhild194 的頭像
    brunhild194

    伯倫希爾的網路小天地

    brunhild194 發表在 痞客邦 留言(2) 人氣()