這個討人厭的問題似乎蠻早之前就有存在,通常是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個小時的時間..唉..在趕新專案呀...為何上班時就想不到呢?一下班就想到了...嘖嘖..好忙好忙..
留言列表