【问题标题】:'Sys.WebForms.PageRequestManager' is null or not an object'Sys.WebForms.PageRequestManager' 为 null 或不是对象
【发布时间】:2011-08-15 06:41:04
【问题描述】:

您好,我有一个 aspx 页面,其中包含以下代码

  <asp:ScriptManager ID="scriptManager" runat="server" AsyncPostBackTimeout="500" EnablePageMethods="true">
            </asp:ScriptManager>

            <script type="text/javascript">
          Sys.Application.add_init(BeginRequestHandler);
          Sys.Application.add_init(EndRequestHandler);

          Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
          Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
          function BeginRequestHandler(sender, args) {
              AsynProcessing('block', 'AlertDiv', 'ProcessingImage');
          }
          function EndRequestHandler(sender, args) {
              AsynProcessing('none', 'AlertDiv', '');
          }
          function AsynProcessing(visstring, elem, img) {
              var adiv = $get(elem);
              adiv.style.display = visstring;
              adiv.image = img;
          }

但页面抛出 javascrip 错误,因为“Sys.WebForms.PageRequestManager”为空或不是对象。我已将下面的 scriptmanager 标签。我什至尝试添加

<xhtmlConformance  mode="Transitional"/>

在 web.config 部分。但仍然得到同样的错误。
任何帮助深表感谢。提前致谢

【问题讨论】:

    标签: asp.net scriptmanager


    【解决方案1】:

    用这段代码包装你的处理程序,以便在调用Sys.WebForms.PageRequestManager之前等待所有必要的脚本被加载

    Sys.Application.add_init(function(){ ... your code ....}
    

    http://msdn.microsoft.com/en-us/library/bb397532.aspx

    编辑:Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandl‌​er) 这一行出错的原因是尚未加载脚本,因此如果您想处理异步回发,则必须编写如下内容:

    Sys.Application.add_init(function(){ 
        Sys.WebForms
           .PageRequestManager
           .getInstance()
           .add_beginRequest(BeginRequestHandler)
    });
    

    在简单的英语中是什么意思?等到所有脚本都加载完毕(包括Sys.WebForms命名空间)并订阅事件beginRequest 你的脚本块应该是这样的:

    <script type="text/javascript">
        Sys.Application.add_init(function () {
            Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
        });
        Sys.Application.add_init(function () {
            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        });
    
        function BeginRequestHandler(sender, args) {
            AsynProcessing('block', 'AlertDiv', 'ProcessingImage');
        }
        function EndRequestHandler(sender, args) {
            AsynProcessing('none', 'AlertDiv', '');
        }
        function AsynProcessing(visstring, elem, img) {
             var adiv = $get(elem);
             adiv.style.display = visstring;
            adiv.image = img;
        }  
    </script>
    

    【讨论】:

    • 嗨谢谢..我试过这个...但是当 Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);执行时,WebForms 是“未定义的”。所以我又遇到了同样的异常
    • 您能分享更多代码吗? AsynProcessing 方法,以及用于创建 beginRequest 处理程序的对象。谢谢!
    • 嗨...我尝试了你给出的代码。但我仍然遇到同样的错误。在 aspx 页面中,我给出了 Sys.Application.add_init(function () { Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler); });
    • 但在动态页面中显示为 'Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);'为什么会这样?
    • 很抱歉,我失去了你的想法。什么叫动态页面?是您在浏览器中看到的页面吗?我对你的理解正确吗?你写在 aspx Sys.Application.add_init(function () { Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandl‌​er); });但浏览器显示 Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHand‌​ler);当你在做viewsorce时
    【解决方案2】:

    您的 JavaScript 块似乎在 ASP.net Ajax 加载之前执行,请尝试将其放在页面底部或 &lt;form&gt; 标记之后...

    【讨论】:

    • 嗨..感谢您的回复。我对aspx完全陌生。因此,如果我提出一些愚蠢的疑问,请多多包涵。在我的页面中,我没有
      标签。我必须把它放在 里面还是外面?
    • 您在 MasterPage 还是 aspx 页面中添加了 ?如果您已将其添加到 aspx 页面中,则将其从那里删除并将其添加到 MasterPage 中的
      标签下
    • 你能告诉我如何找到特定 aspx 的母版页吗?
    • 在您的 标签内的 aspx 页面中(在您的 aspx 页面的最顶部),查找 MasterPageFile 属性,它必须类似于 xyz.Master ...
    • 嗨 Waqas,我已将它放在母版页中。但仍然得到同样的错误....
    【解决方案3】:

    我也有这个问题。对我来说,这是由于 web 农场和 web.config 中缺少 machinekey 条目。

    <system.web>
     <machineKey validationKey="D61B3C89CB33A2F1422FF158AFF7320E8DB8CB5CDA1742572A487D94018787EF42682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
       decryptionKey="FBF50941F22D6A3B229EA593F24C41203DA6837F1122EF17" />
    

    【讨论】:

      猜你喜欢
      • 2018-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多