[ASP.NET]UpdatePanel中Postback會失效的問題

原本在 UpdatePanel 中的 CheckBoxList (AutoPostBack=True),
在多按幾次(次數不定)之後會失效(checkbox點了沒反應),
為何會這樣子呢?

環境 : Windows 2012, .NET 4.0

最近同事詢問在將程式部署到Windows 2012後,原本在 UpdatePanel 中的 CheckBoxList (AutoPostBack=True),

在多按幾次(次數不定)之後會失效(checkbox點了沒反應),當失效後,需要重開ie才會正常。

錄IE的developer tool網路截取,會發現失效時網頁狀態為pending。以下為 HttpWatch 錄下來的圖,

image

 

剛開始發現,如果將該網站加入到 「相容性檢視」 的網站之中,就不會有這個問題!

如果要設定相容性,可參考「隨手小筆記」。

但感覺應該是因為前個Ajax Post還沒結束,後者就要再Post,所以就搞不出來,逾沖逾多。

所以就再加入以下的JavaScript,當前面的 Ajax Post 還沒結束,後面如果要再沖進去,就不給沖,如下,

var prm = Sys.WebForms.PageRequestManager.getInstance(); 
prm.add_initializeRequest(initializeRequest); 
function initializeRequest(sender, args) {
	if (prm.get_isInAsyncPostBack()) {
		args.set_cancel(true); 
	}
}

 

經過測試,這樣就不會發生一直沖,而造成失效的問題了。

 

參考資訊

Working with Partial-Page Rendering Events

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^