【问题标题】:Microsoft JScript runtime error: 'this._postBackSettings.async' is null or not an objectMicrosoft JScript 运行时错误:“this._postBackSettings.async”为空或不是对象
【发布时间】:2010-09-14 05:10:15
【问题描述】:

我的 ASP 页面上有报告,每次更改过滤器并单击查看报告时,都会收到此错误:

Microsoft JScript 运行时错误:“this._postBackSettings.async”为空或不是对象

我尝试将 EnablePartialRendering="true" 更改为 EnablePartialRendering="false" 但随后人们无法登录网站

【问题讨论】:

  • 这是 sql 报告服务吗?你能提供更多信息吗?
  • 我也有同样的问题。我正在使用 Reporting Services 2008 和新的报表查看器控件。我的报告页面位于母版页中,并且我的母版页上有一个脚本管理器。

标签: javascript asp.net asp.net-ajax


【解决方案1】:

我发现了这个问题的另一种解决方案。

我使用 Telerik RadScriptManager 和 RadAjaxManager(它们基于各自的 ASP.NET 框架对象构建)。我在实现 JQuery UI 动画以隐藏按钮时发现了一些问题——我执行了按钮的“OnClientClick”的动画。

为了解决这个问题,我处理了 OnRequestStart 和 OnResponseEnd 客户端事件,并分别从 OnRequestStart 和 OnResponseEnd 执行了适用的隐藏和显示动画。

我知道不是每个人都使用 Telerik,但这个概念可能很关键,并且可能适用于其他 AJAX 框架:当对 ajaxified 元素执行客户端更改时(尤其是在 AJAX 请求处理期间发生的动画等更改),进行这些更改在框架的 RequestStart/ResponseEnd 客户端事件处理程序中,而不是在 ajaxified 元素的客户端事件处理程序中。

【讨论】:

    【解决方案2】:

    我也遇到过同样的问题,但直到我最终找到了 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 可用。

    【讨论】:

      【解决方案3】:

      通过将EnablePartialRendering 设置为ScriptManager 的false 来解决此问题。

      ScriptManager1.EnablePartialRendering  = false;
      

      在使用rsweb:ReportViewer 的页面的OnInit 事件中。 如果要为其他页面启用,请在母版页的 OnInit 上将其设置为 true。

      【讨论】:

        【解决方案4】:

        将按钮放在面板内(不是更新面板),然后将此行添加到面板 DefaultButton="Button1"

        这样可以避免错误。

        【讨论】:

          【解决方案5】:

          我也遇到了这个问题,虽然在我的例子中没有涉及到报告:它只是一个带有图像按钮的普通 asp.net 页面。问题是在客户端单击时,我正在使用以下代码取消下一个 javascript 事件:

          event.cancelBubble = true;
          if (event.stopPropagation)
              event.stopPropagation();
          

          我删除了代码,问题也消失了。我的猜测是 asp.net ajax 需要对客户端单击进行一些处理,也许您的报告控件正在做一些我正在做的事情。希望它可以帮助您找到您的问题,并对我的英语感到抱歉:) 问候, 嗯

          【讨论】:

            【解决方案6】:

            刚刚遇到这个问题,无意中找到了解决办法。

            问题在我将 ScriptManager 移到母版页后开始出现 - 并且仅在我使用没有更新面板的页面时出现。

            通过将 ScriptManager 标记移动到母版页内容区域的前面来解决此问题。

            JavaScript 排序问题?

            【讨论】:

            • 很奇怪,但您的评论刚刚解决了我在母版页和没有更新面板的页面时遇到的同样问题。谢谢!
            猜你喜欢
            • 2013-01-11
            • 2011-02-24
            • 1970-01-01
            • 2011-10-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-08
            相关资源
            最近更新 更多