2011-09-07 118 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; 
    } 
}