我有一个要求,向用户显示一个警告框,当有一些异常发生在页面级别(对于不同的异常消息是不同的)。在页面中,我有两个更新面板和基于触发器的更新。这个功能在页面之间很常见。因此,我创建了一个基本页面,并试图在page_onerror事件中处理异常。我正在使用ScriptManager.RegisterStartupScript(…)来显示用户警报。如果我使用相同的代码而不是在catch块中抛出错误,它工作得很好。但是如果我在page_error方法中抛出异常和处理,它不工作…
(因为我正在使用更新面板,所以我不能使用响应。)
请帮帮我。
页面生命周期在异步回发中略有不同-您确定Page_OnError
是否被解雇?如果是,则可能事件触发得太晚,以至于脚本管理器已经将注册的脚本呈现到输出中。
你也许应该试试ScriptManager。AsyncPostBackError事件。如果您想要做的是显示自定义错误警报,那么设置ScriptManager。AsyncPostBackErrorMessage属性应该能做到这一点。
我通常在母版页中使用ScriptManager
,并在后面的代码中处理AsyncPostBackError
事件以发送回一些自定义异常。在java脚本端,我使用end请求处理程序来显示自定义警报框。查看上述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;
}
}