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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值