你们都知道有多烦人:
我确实有一个日志系统,并且正确的错误在那里很明确,但我想向用户提供更好的信息。
我一直在尝试几种方法,但我正在使用Telerik组件和jQuery,我最终使用了ASP.NET Ajax方法和jQuery,所以我使用
function pageLoad() {
try {
var manager = Sys.WebForms.PageRequestManager.getInstance();
manager.add_endRequest(endRequest);
manager.add_beginRequest(OnBeginRequest);
manager
}
catch (err) {
alert(err);
}
}
以及
$(document).ready(function() { ... }
即使alert(err)
次事件
OnClick
也永远不会被解雇
避免此消息错误并提供更清晰方法的最佳方法是什么?
所有这一切在<asp:UpdatePanel>
,因为当我不知道更好(3年前!)时我会使用它,我真的不想陷入困境并重新建立所有从头开始:(
非常感谢任何帮助
在 volpav 解决方案
之后更新了更多错误窗口
答案 0 :(得分:0)
如果我理解正确的话:
var manager = Sys.WebForms.PageRequestManager.getInstance();
manager.add_endRequest(function(sender, args) {
var error = args.get_error();
if(error != null && error.httpStatusCode != null) {
// handle error
args.set_errorHandled(true);
}
});
- 帕维尔
答案 1 :(得分:0)
您看到的错误并不是您可以在客户端轻松处理的错误。由于PageRequestManager无法解析响应,因此您无法处理endRequest和set_errorHandled()。
它告诉你的是,有些事情会破坏对UpdatePanel异步回发的响应。我写了很久以前的一个常见原因:http://encosia.com/2007/06/19/the-easiest-way-to-break-aspnet-ajax-pages/
正如错误消息所述,另一个常见原因是注入标记的自定义HttpModules。 GoDaddy使用(或习惯)一个在免费托管帐户上注入广告,例如,这打破了UpdatePanel。
如果您检查Firebug或Fiddler之类的响应,那么外国内容应该是显而易见的。如果不了解您的应用程序,我很难猜测它究竟是什么。
答案 2 :(得分:0)
您可以使用ScriptManager的AsynPostBackError事件来执行自定义错误处理。
答案 3 :(得分:0)
我使用他的方法和jQuery以及一个名为Noty的插件,通知看起来更好。
jQuery Noty插件:http://needim.github.io/noty/