我的 asp 页面上有报告,每次更改过滤器并单击查看报告时,都会收到此错误:
Microsoft JScript 运行时错误:“this._postBackSettings.async”为空或不是对象
我尝试将 EnablePartialRendering="true" 更改为 EnablePartialRendering="false" 但随后人们无法登录该网站
我的 asp 页面上有报告,每次更改过滤器并单击查看报告时,都会收到此错误:
Microsoft JScript 运行时错误:“this._postBackSettings.async”为空或不是对象
我尝试将 EnablePartialRendering="true" 更改为 EnablePartialRendering="false" 但随后人们无法登录该网站
我发现了这个问题的另一种解决方案。
我使用 Telerik RadScriptManager 和 RadAjaxManager(它们建立在各自的 ASP.NET 框架对象之上)。当我实现 JQuery UI 动画来隐藏按钮时,我发现了一些问题——我执行了按钮的“OnClientClick”的动画。
为了解决这个问题,我处理了 OnRequestStart 和 OnResponseEnd 客户端事件,并分别从 OnRequestStart 和 OnResponseEnd 执行了适用的隐藏和显示动画。
我知道不是每个人都使用 Telerik,但这个概念可能是关键,并且可能适用于其他 AJAX 框架:当对 ajaxified 元素执行客户端更改(尤其是在 AJAX 请求处理期间发生的动画等更改)时,在框架的RequestStart/ResponseEnd 客户端事件处理程序,而不是 ajaxified 元素的客户端事件处理程序。
我遇到了同样的问题,直到我最终找到了完全符合我要求的https://siderite.dev/blog/thispostbacksettingsasync-is-null-or.html之前,我还没有真正找到任何令人满意的解决方案。
只是为了避免将来可能出现死链接的问题,这里是代码:
var script = @"
if (Sys &&
Sys.WebForms && Sys.WebForms.PageRequestManager &&
Sys.WebForms.PageRequestManager.getInstance)
{
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm &&
!prm._postBackSettings)
{
prm._postBackSettings = prm._createPostBackSettings(false, null, null);
}";
ScriptManager.RegisterOnSubmitStatement(
Page,
Page.GetType(),
"FixPopupFormSubmit",
script);
如果在没有设置 _postBackSettings 的情况下提交,它会创建它们,导致空引用异常消失,因为 _postBackSettings.async 然后可用。
这个问题是通过设置EnablePartialRendering
为 false 来解决的ScriptManager
。
ScriptManager1.EnablePartialRendering = false;
在使用OnInit
页面的情况下rsweb:ReportViewer
。如果要为其他页面启用,请在母版页的OnInit
.
将按钮放在面板内(不是更新面板),然后将此行添加到面板 DefaultButton="Button1"
这将避免错误。
我也遇到了这个问题,尽管在我的情况下没有涉及到报告:它只是一个带有图像按钮的普通 asp.net 页面。问题是在客户端单击时,我使用以下代码取消了下一个 javascript 事件:
event.cancelBubble = true;
if (event.stopPropagation)
event.stopPropagation();
我删除了代码,问题也消失了。我的猜测是 asp.net ajax 需要对客户端单击进行一些处理,也许您的报告控件正在做一些我正在做的事情。希望它可以帮助您找到您的问题,并为我的英语感到抱歉:) 问候,MMM
我刚刚遇到这个问题,偶然找到了解决方案。
在我将 ScriptManager 移动到母版页后,问题开始出现 - 只有当我使用没有更新面板的页面时。
通过将 ScriptManager 标记移动到母版页内容区域的前面来解决此问题。
JavaScript 排序问题?