当页面级别发生异常时,我需要向用户显示一个警告框(对于不同的异常消息不同)。 在页面中,我有两个更新面板和基于触发器的更新。此功能在各个页面中很常见。所以我创建了一个基页并尝试在page_onerror事件中处理异常。我正在使用ScriptManager.RegisterStartupScript(...)来显示用户的警报。 如果我使用相同的代码而不是在catch块中抛出错误,它工作正常。但是如果我在page_error方法中抛出异常和处理,它就不起作用了......
(因为我使用的是更新面板,所以我不能使用Response.Write。)
请帮帮我。
提前致谢。
答案 0 :(得分:0)
异步回发中的页面生命周期略有不同 - 您确定Page_OnError
被解雇了吗?如果是,则可能事件触发得太晚以至于脚本管理器已经将已注册的脚本呈现到输出中。
你应该尝试ScriptManager.AsyncPostBackError事件。如果您只想显示自定义错误提醒,那么设置ScriptManager.AsyncPostBackErrorMessage属性应该可以解决问题。
我通常在母版页中使用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;
}
}