首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“Sys.WebForms.PageRequestManager”为null或不是对象

“Sys.WebForms.PageRequestManager”为null或不是对象
EN

Stack Overflow用户
提问于 2011-08-15 14:41:05
回答 3查看 18.2K关注 0票数 4

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

代码语言:javascript
复制
  <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标签下面了。我甚至还添加了

代码语言:javascript
复制
<xhtmlConformance  mode="Transitional"/>

在web.config.But的部分中,仍然得到相同的错误。

任何帮助都是非常感谢的。提前感谢

EN

回答 3

Stack Overflow用户

发布于 2011-08-15 15:15:51

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

代码语言:javascript
复制
Sys.Application.add_init(function(){ ... your code ....}

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

编辑:这行Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandl‌​er)错误的原因是脚本还没有加载,所以如果你想要处理异步回发,你必须编写类似这样的代码:

代码语言:javascript
复制
Sys.Application.add_init(function(){ 
    Sys.WebForms
       .PageRequestManager
       .getInstance()
       .add_beginRequest(BeginRequestHandler)
});

用通俗易懂的英语来说是什么意思?等待所有脚本(包括Sys.WebForms命名空间)加载完毕,并订阅event beginRequest,您的脚本块应如下所示:

代码语言:javascript
复制
<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>
票数 5
EN

Stack Overflow用户

发布于 2011-08-15 14:45:09

您的JavaScript代码块似乎是在ASP.net Ajax加载之前执行的,请尝试将此代码放在页面底部或<form>标记之后……

票数 2
EN

Stack Overflow用户

发布于 2012-06-13 02:48:00

我也遇到过这个问题。对我来说,这是由于一个网络场和web.config中缺少机器键条目造成的。

代码语言:javascript
复制
<system.web>
 <machineKey validationKey="D61B3C89CB33A2F1422FF158AFF7320E8DB8CB5CDA1742572A487D94018787EF42682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
   decryptionKey="FBF50941F22D6A3B229EA593F24C41203DA6837F1122EF17" />

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7062286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档