ASP.NET2.0中基于ICallbackEventHandler的回调机制

1 ICallbackEventHandler.RaiseCallbackEvent
客户回调特性有一个限制:不能指定应执行服务器上的哪个方法。客户回调特性将执行服务器上的 RaiseCallbackEvent 方法,它在 ICallbackEventHandler 接口中定义。因此,在使用客户回调特性执行服务器端方法时,必须执行 RaiseCallbackEvent 方法,给该方法添加自己的服务器端逻辑。由于不能指定要执行哪个服务器端方法,就只能执行服务器端代码,把结果返回给客户。如果要指定调用哪个方法,就可以给 RaiseCallbackEvent 传送一个参数,来指定调用哪个方法,并在 RaiseCallbackEvent 中处理它。如下面的例子所示:
    public string RaiseCallbackEvent(string eventArgs)
    {
         if (eventArgs == "Method1")
            //call method 1
         else if (eventArgs == "Method2")
            //call method 2
         ...
    }

2
ICallbackEventHandler
的两个方法 RaiseCallbackEvent GetCallbackResult 必须执行,才能使回调发挥作用。 RaiseCallbackEvent 方法带一个参数,它包含客户端方法中的数据, GetCallbackResult 方法给客户机返回一个字符串,表示服务器端方法的输出。返回值作为一个参数传送给客户端回调方法。


3 Request.Browser.SupportsCallback 检查浏览器是否支持回调

4 、获得回调事件
使用 Page 类的 GetCallbackEventReference 方法来获得客户端的回调函数 Page.ClientScript.GetCallbackEventReference()

GetCallbackEventReference
四个重载方法:

【1】public string GetCallbackEventReference(
Control control,
string argument,
string clientCallback,
string context)

【2】public string GetCallbackEventReference(
Control control,
string argument,
string clientCallback,
string context,
string clientErrorCallback)

【3】public string GetCallbackEventReference(
string target,
string argument,
string clientCallback,
string context,
string clientErrorCallback)

 

【4】public string GetCallbackEventReference

(

               Control control,

               string argument,

               string clientCallback,

               string context,

               string clientErrorCallback,

               bool useAsync

)

 

4-1 描述了 GetCallbackEventReference 的参数:
                       
control           
执行 IcallbackEventHandler 的控件
target             
如果没有指定控件,该参数就是执行 ICallbackEventHandler 的控件的 ID
argument        
要发送给 RaiseCallbackEvent 的值

clientCallback      
客户端回调方法的名称
context           
从客户端事件传送回客户端回调方法的值
clientErrorCallback  
客户端错误回调方法的名称。这个方法在服务器抛出异常时执行

useAsync true 表示同步执行回调; false 表示异步执行回调。

返回值     调用客户端回调的客户端函数的名称。

 

5 string m_callBack=Page.ClientScript.GetCallbackEventReference() 函数返回的是一个字符串,表示的是客户端执行的回调函数,类似于 WebForm_DoCallback('__Page',arg,ClientCallback,ctx,ClientErrorCallback,false), 此时 m_callBack 中即为该函数的函数名。

客户端通过引用该字符串( <%=m_callBack%> )来调用该函数,此时客户端会执行 ClientCallback 函数,并将 ctx 值传给它。再将 arg 值传给服务器,服务器端会执行 RaiseCallbackEvent GetCallbackResult 函数,并接收 arg

6 WebForm_DoCallback 方法带的参数:当前页面、发送到服务器端的 RaiseCallbackMethod 中的参数值、客户端回调方法、发送给客户端回调方法的 context 值、服务器抛出异常时执行的客户端方法、是否实时回调。

7 ' CallbackResult 构造方法
        '
第一个参数:将要异步刷新的内容所属的 Control 类型
        '
第二个参数: Control ID
        '
第三个参数:发送的参数,包括
content, innercontent, image, or javascript
        '
第四个参数:发送到浏览器的内容


8 要同时刷新多个控件,需要声明多个 callbackresult ,将它们添加到 CallbackResults , 最后返回 CallbackResults.ToString() 即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值