【问题标题】:PageMethod no longer gets called after adding UpdatePanel to a page将 UpdatePanel 添加到页面后不再调用 PageMethod
【发布时间】:2009-03-04 16:08:35
【问题描述】:

我在 asp.net 2.0 上使用 asp.net ajax 1.0 版。 (我还不能升级到 3.5)

我有一个 PageMethod 会被 Javascript 调用。在我将 UpdatePanel 添加到页面的另一部分之前,这非常有效。现在,当我在打开调试的情况下运行页面时,页面方法中的断点永远不会被调用。当我在萤火虫中查看调用 PageMethod 的帖子时返回的内容时,我注意到返回了整个 aspx 页面,而不仅仅是调用值。我做了什么?

这是对 PageMethod 的 Javascript 调用:

function EndRequestHandler(sender, args) {
    $('#selectedCHK').change(
        function() {
            var chkedInput = $('#selectedCHK');
            var networkRead = chkedInput[0].checked;
            PageMethods.ChangeSelectedNetworkReadFlag(routeNum, 
                                                      networkRead, 
                                                      function(msg) { alert(msg);  });
        }
    );
}
$(document).ready(function() {
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}

在每个请求结束时调用 EndRequestHandler 函数的意义在于,ID 为“#selectedCHK”的项目位于更新面板内,并且每次刷新 UpdatePanel 时都需要设置事件。

【问题讨论】:

  • 您能否提供更多关于从何处调用页面方法以及如何调用的详细信息?也许是代码示例?
  • @Andrew;感谢我刚刚添加代码的建议。

标签: c# asp.net asp.net-ajax updatepanel pagemethods


【解决方案1】:

尝试在更新面板上将更新模式设置为条件。听起来更新面板正在劫持您的事件。

<asp:UpdatePanel ID="upMyPanel" UpdateMode="Conditional" runat="server">

【讨论】:

  • 感谢 @RSolberg 的帮助,我不知道 UpdateMode。
【解决方案2】:

我发现这是一个配置问题。具体我需要补充:

<httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>

部分内。

我以为我已经正确配置了站点,但我决定一步一步地通过documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 2014-05-04
    • 2011-06-18
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多