.net 使用Ajax更新面板,如果将ScriptManager.RegisterStartUpScript放在页面错误中,则该脚本将无法工作

.net 使用Ajax更新面板,如果将ScriptManager.RegisterStartUpScript放在页面错误中,则该脚本将无法工作,.net,asp.net,updatepanel,scriptmanager,ajax.net,.net,Asp.net,Updatepanel,Scriptmanager,Ajax.net,我有一个要求,向用户显示一个警告框时,有一些异常发生在页面级别为不同的异常消息是不同的。 在页面中,我有两个更新面板和基于触发器的更新。这种功能在页面中很常见。所以我创建了一个基本页面,并尝试在page_onerror事件中处理异常。我正在使用ScriptManager.RegisterStartupScript。。。为用户显示警报。 若我使用相同的代码而不是在catch块中抛出错误,那个么它就可以正常工作了。但若我在page_error方法中抛出异常和处理,它将不起作用 由于我使用的是更新面板

我有一个要求,向用户显示一个警告框时,有一些异常发生在页面级别为不同的异常消息是不同的。 在页面中,我有两个更新面板和基于触发器的更新。这种功能在页面中很常见。所以我创建了一个基本页面,并尝试在page_onerror事件中处理异常。我正在使用ScriptManager.RegisterStartupScript。。。为用户显示警报。 若我使用相同的代码而不是在catch块中抛出错误,那个么它就可以正常工作了。但若我在page_error方法中抛出异常和处理,它将不起作用

由于我使用的是更新面板,所以无法使用Response.Write

请帮帮我


提前感谢。

异步回发中的页面生命周期略有不同-您确定页面错误是否被解雇了吗?如果是,则可能是事件触发得太晚,以至于脚本管理器已经将已注册的脚本呈现到输出中

你也许应该试试这个活动。如果您只想显示自定义错误警报,那么设置属性就可以了

我通常在母版页中使用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;
     }
}