2011-09-07 33 views
0

當頁面級發生某種異常(對於不同的異常消息不同)時,我有要求向用戶顯示警告框的要求。 在頁面中,我有兩個更新面板和基於觸發器的更新。這個功能在各個頁面上都很常見。所以我創建了一個基頁,並嘗試處理page_onerror事件中的異常。我正在使用ScriptManager.RegisterStartupScript(...)來顯示用戶的警報。 如果我使用相同的代碼,而不是在catch塊中拋出錯誤,它工作正常。但是,如果我扔的異常和處理在PAGE_ERROR方法,它是不工作...使用Ajax更新面板時,如果放置在page_onerror中,ScriptManager.RegisterStartUpScript不起作用

(由於我使用的更新面板,我不能使用的Response.Write的相同)。

請幫助我。

在此先感謝。

回答

0

異步回傳中的頁面生命週期略有不同 - 您確定是否Page_OnError正在被解僱?如果是,那麼可能這個事件太晚了,以致腳本管理器已經將註冊腳本提交到輸出中。

您應該嘗試ScriptManager.AsyncPostBackError事件。如果你想要做的只是顯示自定義錯誤警報,那麼設置ScriptManager.AsyncPostBackErrorMessage屬性應該做的伎倆。

我通常在master頁面中使用ScriptManager,並在後面的代碼中處理AsyncPostBackError事件以發送一些自定義異常。在java腳本方面,我使用結束請求處理程序來顯示自定義警報框。檢查上面的示例代碼MSDN鏈接:

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
function EndRequestHandler(sender, args) 
{ 
    if (args.get_error() != undefined && args.get_error().httpStatusCode == '500') 
    { 
     var errorMessage = args.get_error().message 
     args.set_errorHandled(true); 
     ToggleAlertDiv('visible'); 
     $get(messageElem).innerHTML = '"' + 
      errorMessage + '" ' + errorMessageAdditional; 
    } 
} 
相關問題