asp.net - 'Sys.WebForms.PageRequestManager' 为空或不是对象

标签 asp.net scriptmanager

嗨,我有一个 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”为空或不是对象。我已经把下面的脚本管理器标签。我什至尝试添加
<xhtmlConformance  mode="Transitional"/>

在 web.config 的部分中。但仍然出现相同的错误。
任何帮助深表感谢。提前致谢

最佳答案

在调用 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>

关于asp.net - 'Sys.WebForms.PageRequestManager' 为空或不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062286/

相关文章:

asp.net - 存在ScriptManagerProxy控件时,以编程方式禁用ScriptManager

asp.net-ajax - HTTP 处理程序在 ~/admin/folder 中的嵌套 Web 应用程序文件夹 : Telerik RadScriptManager cannot find WebResource. axd 中找不到 axd 文件

c# - 如何从队列中一次抓取一条 MSMQ 消息

c# - 如何在 C# 中更新另一个 UserControl 中的 UserControl?

c# - 无法访问该文件,因为它正被另一个进程使用

java - 为什么 eval 类给我一个从 int 到 double 的转换错误?

c# - 更新面板内的中继器 - ItemComand 代码问题 - 在代码隐藏中使用 ScriptManager 调用 javascript 函数

asp.net - 输入类型不是 html5 中的文本的 UpdatePanel

c# - 裁剪/删除图像边缘不需要的空间

c# - ASP.NET 按钮单击事件未在 Bootstrap 模式中触发