2008-09-11 48 views
3

我在popupParentExtender內的popupControlExtender內的更新面板上收到此錯誤。ASP.Net UpdatePanel ImageButton導致「this._postbackSettings.async爲空或不是對象」

我看到很多其他人有這個問題,並有各種修復,其中沒有一個爲我工作。

我很想聽聽爲什麼會出現這種情況的邏輯解釋,並且爲將來避免此類問題提供了一種萬無一失的方法。

我發現像其他人一樣,當觸發器是LinkBut​​ton而不是ImageButton時,不會發生這種錯誤,但仍然懷疑是否有人有解釋。

回答

1

我最好的猜測是UpdatePanel無法正確寫出回傳請求的自定義「異步」屬性。這很可能是由於封裝了其中一個控件(我的直覺是它是popupControlExtender - 它往往對updatepanels有奇怪的行爲,因爲它旨在管理其內部的事件,因爲它的顯示/隱藏目的)。

我會建議刪除更新面板和滾動自己的解決方案,爲您的具體業務需要在那裏,或實現自己的彈出腳本(可能稍微容易寫)。

順便提一句,對於某些背景,「this._postbackSettings.async」是你的AJAX.NET框架試圖找出這是否是異步調用。您可能可以通過在發送回發之前設置此編程方式來克服它(捕獲回發事件並將該字段添加到回發請求中,如果它尚未存在)。

只是有些想法...我不認爲這是一個「即插即用」的答案!

+1

我最終使用帶有圖像的LinkBut​​ton,我發現它是最簡單的解決方案,儘管您的建議一般可能更可靠。 – YonahW 2008-11-04 11:55:58

1

在ScriptManager控件上設置「EnablePartialRendering」爲false可防止出錯,但這不是最佳解決方案。取決於您的應用程序,失去部分渲染的好處可能是一件大事。

只是爲了記錄,我沒有和其他看到錯誤的人完全一樣。我有一個PopupControlExtender,其中是一個複選框列表。我使用javascript方法添加了「全選」鏈接,以編程方式選擇/取消全選。我沒有使用Imagebutton。在添加javascript之前,我沒有看到錯誤,現在即使在刪除它之後,錯誤仍然存​​在。我不得不做另一個改變。

我希望這可以幫助別人......

--Matt

2

我有同樣的問題,並沒有真正發現任何令人滿意的解決方案,直到我結束了在http://siderite.blogspot.com/2009/02/thispostbacksettingsasync-is-null-or.html這不正是我想。

只是爲了避免在未來這裏可能死鏈接的問題是代碼:

var script = @" 
if (Sys && 
    Sys.WebForms && Sys.WebForms.PageRequestManager && 
    Sys.WebForms.PageRequestManager.getInstance) 
{ 
    var prm = Sys.WebForms.PageRequestManager.getInstance(); 
    if (prm && 
     !prm._postBackSettings) 
    { 
     prm._postBackSettings = prm._createPostBackSettings(false, null, null); 
    }"; 

ScriptManager.RegisterOnSubmitStatement(
    Page, 
    Page.GetType(), 
    "FixPopupFormSubmit", 
    script); 

在的情況下,一個提交而不_postBackSettings被設置創建它們,導致空引用異常消失_postBackSettings .async然後可用。

希望這會有所幫助,

G.

+0

自從我上次不得不處理這個問題以來,我已經很長時間了,因爲我不再使用Microsoft Ajax,但這看起來像一個很好的乾淨解決方案。 – YonahW 2011-02-28 15:03:01

相關問題