使用Ajax更新面板,ScriptManager.RegisterStartUpScript不工作,如果放置在page_



我有一个要求,向用户显示一个警告框,当有一些异常发生在页面级别(对于不同的异常消息是不同的)。在页面中,我有两个更新面板和基于触发器的更新。这个功能在页面之间很常见。因此,我创建了一个基本页面,并试图在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;
     }
}

相关内容

  • 没有找到相关文章

最新更新