我在我的ASP.NET 4.0应用程序中使用Telerik控件,它位于任何更新面板之外。在同一页中,我使用了几个ModalPopUps & update pannels来防止意外的完整回发。有两个从Javascript函数调用的Pagemethods &以及两个服务器端Button单击事件,这些事件也是从javascript函数调用的。在处理过程中,Page经常抛出以下突出显示的Javascript错误&在没有javascript函数继续或调用任何服务器端方法或事件之后&程序已经挂起。一旦它托管在本地服务器中,并且发生以下定义的错误,那么应用程序将使用进一步的javascript调用进行多功能处理。
错误消息来自:
function Sys$WebForms$PageRequestManager$_endPostBack(error, executor, data) {
if (this._request === executor.get_webRequest()) {
this._processingRequest = false;
this._additionalInput = null;
this._request = null;
}
var handler = this._get_eventHandlerList().getHandler("endRequest");
var errorHandled = false;
if (handler) {
var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
handler(this, eventArgs);
errorHandled = eventArgs.get_errorHandled();
}
if (error && !errorHandled) {
**throw error;**
}
}上面标记的区域抛出错误.
我尝试了以下定义的方法,但还无法最终完成,即要么停止反映此错误,要么跳过此错误,这样它就不会产生任何影响应用程序的正常过程周期。
尝试了解决方案1。首先,我尝试在update面板下注册控件&在页面加载时执行任何服务器端事件。
ScrMgr.RegisterAsyncPostBackControl(this.LstBoxXSD); ScriptManager ScrMgr =新ScriptManager()
尝试了解决方案2。其次,我尝试将控件与其同步触发器绑定到更新面板中。
**<asp:AsyncPostBackTrigger ControlID="LstBoxXSD" EventName="SelectedIndexChanged"/>**尝试了解决方案3。最近,需要使用来自jquery的第三方编辑器控件的KeyDown事件,我已经将编辑器控件中的IFrame与" KeyDown“事件连接起来,但是一旦update窗格执行任何异步回发操作,就会解除绑定的连接,所以我在JQuery中完成了下面的代码,以维护编辑器中的Iframe之间的钩式绑定& it's KeyDown事件。
**<script language="javascript" type="text/javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args) {
$(document).ready(function () {
$(function () {
$('#3rdPartyControl_contentIframe').contents().find("body").bind("keydown", function (e) {
e = e || window.event; // because of Internet Explorer quirks...
var code = e.which || e.charCode || e.keyCode; ;
if (code == 49 && !e.altKey && !e.ctrlKey && !e.shiftKey) {
// alert(code);
} else if (code == 65 && e.altKey) {
// alert(code);
}
else if (code == 83 && e.altKey) {
SelectElement();
}
else if (code == 80 && e.altKey) {
if (String($find("3rdPartyControl").getSelectionHtml().trim()).length > 0) {
RemoveParentElem();
}
}
else if (code == 82 && e.altKey) {
if (String($find("3rdPartyControl").getSelectionHtml().trim()).length > 0) {
RemoveElem();
}
}
else {
}
});
});
});
}
</script>**重要的是,我在Body标记之后执行了上面的JQuery代码。请帮我一个可能的解决方案,从上述问题,我可以停止产生这个错误或绕过错误无论如何。因为它完全推迟了项目的完成。
发布于 2013-02-08 06:58:47
它是第一次从update子控件事件中编写一些会话变量。为了避免这个解析错误,我们应该遵循以下解决方案之一: 1. Page.Trace.IsEnabled = false;应该在同步页面加载和异步页面加载中禁用跟踪。if(!Page.IsPostBack) { Page.Trace.IsEnabled=false;}Page.Trace.IsEnabled=false;} if { Page.Trace.IsEnabled = false;}
3.在首次加载页面以创建cookie时,将初始值放在会话变量中。
https://stackoverflow.com/questions/14628690
复制相似问题