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 方法的签名也要完全一样。只有参数名可改。

posted on 2008-06-12 10:35  NeilChen  阅读(1069)  评论(3编辑  收藏  举报

导航