我在我的ASP.NET 4.0应用程序中使用Telerik RAD Editor控件,该应用程序位于任何更新面板之外。在同一页面中,我使用了几个ModalPopUps&更新pannels以防止意外的完全回发。 从Javascript函数&中调用了几个Pagemethods。以及从javascript函数调用的几个服务器端按钮单击事件。 在过程中经常页面抛出以下突出显示的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。 首先,我试图注册控件位于更新pannel&在页面加载中执行任何服务器端事件。
ScriptManager ScrMgr = new ScriptManager(); ScrMgr.RegisterAsyncPostBackControl(this.LstBoxXSD);
尝试解决方案2. 其次,我尝试将控件与更新面板中的Asychronous触发器绑定。
**<asp:AsyncPostBackTrigger ControlID="LstBoxXSD" EventName="SelectedIndexChanged"/>**
尝试过解决方案3。 接下来,有一个需要使用来自jquery的第三方编辑器控件的KeyDown事件,我已经使用“KeyDown”事件将IFrame挂钩在该编辑器控件中,但是一旦更新pannel执行任何异步回发它解开绑定,所以我已经完成了下面的代码在JQuery中维护编辑器内的Iframe之间的钩子绑定&amp;这是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 Tag之后完成了上面的JQuery代码。 请帮助我解决上述问题的可能解决方案,我可以停止生成此错误或无论如何绕过错误。因为它完全推迟了项目的完成。
答案 0 :(得分:0)
这是第一次从更新pannel子控件事件中编写一些会话变量。要避免此解析错误,应遵循以下解决方案之一: 1. Page.Trace.IsEnabled = false; 一个应该在同步页面加载&amp;异步页面加载。 如果(!Page.IsPostBack) { Page.Trace.IsEnabled = FALSE; } else if(ScriptManager.GetCurrent(this.Page).IsInAsyncPostBack) { Page.Trace.IsEnabled = false; }
2。 在页面属性中添加EnableEventValidation =“false”。
3.在第一次创建cookie的页面加载时,在会话变量中输入初始值。