• DynamicPopulateExtender 控件调 WebService 的500错误


    一直没怎么去仔细研究 ASP.NET AJAX Control Toolkit,昨天要写一个东西用到了其中的 DynamicPopulateExtender 控件。该控件的作用,是可以异步调用服务器端的方法返回一段 HTML,更新指定的控件内容。通常用 asp:Panel 来配合使用。

    下面是简单的 Markup:

        <asp:Panel ID="panelPrintLinks" runat="server">
            test
        
    </asp:Panel>
        
    <cc1:DynamicPopulateExtender ID="dp1"
            runat
    ="server" Enabled="True" 
            TargetControlID
    ="panelPrintLinks"
            ServiceMethod
    ="GetPrintLinks">
        
    </cc1:DynamicPopulateExtender>    

    其中 ServiceMethod 属性指定了对应的 WebService 方法,可用当前页面上的某个方法加上标签实现:

    public partial class ViewNodes: PageBase
    {
        [WebMethod()]
        [ScriptMethod()]
        
    public static string GetPrintLinks(string contextKey)
        {
            
    return "<a href='http://www.google.com'>Google</a>";
        }
    }

    客户端在需要的时候可以用 JavaScript 去触发这个内容更新。代码如下:

        <script type="text/javascript">
            
    function ShowPrintLinks(contextKey)
            {
                
    var behavior = $find('dp1');
                
    if (behavior)
                {
                    behavior.populate(contextKey);
                }
            }    
        
    </script>

    这里的参数名 contextKey 我原先写的不是这个,结果一直报 "WebService 调用错误: 500" 或者 12031 之类的错误。
    开始,以为是 Authentication 的问题,但是在 web.config 里禁用了 FormsAuthentication 错误信息依旧。
    最终发现原来这个 contextKey 这个参数名必须一字不差,而且参数个数也只能一个。WebService 方法的签名也要完全一样。只有参数名可改。

  • 相关阅读:
    康复计划
    Leetcode 08.02 迷路的机器人 缓存加回溯
    Leetcode 38 外观数列
    Leetcode 801 使序列递增的最小交换次数
    Leetcode 1143 最长公共子序列
    Leetcode 11 盛水最多的容器 贪心算法
    Leetcode 1186 删除一次得到子数组最大和
    Leetcode 300 最长上升子序列
    Leetcode95 不同的二叉搜索树II 精致的分治
    Leetcode 1367 二叉树中的列表 DFS
  • 原文地址:https://www.cnblogs.com/RChen/p/1218169.html
Copyright © 2020-2023  润新知