ICallbackEventHandler 小析
来源:互联网 发布:淘宝是b2c还是c2c 编辑:程序博客网 时间:2024/05/15 04:26
项目中经常会用到查找的功能,比如查找某个设备了,某个人了,所以想写一个控件类似于scriptaculous new Ajax.Autocompleter (...),于是就查询下如何在asp.net 下实现回调,于是乎就研究下 这个接口到底是如何工作的,看是否有必要用这个特征,
该接口如此定义:
实现两个方法
1 fire回调事件 2 得到回调结果
具体的例子是这样的: http://www.codeproject.com/aspnet/clientcallback.asp
服务器端:
1 实现两个方法 2 GetCallbackEventReference 注册客户端的回调事件
客户端:
1 一个向服务器请求的js函数,这里回用到的注册的 Callserver函数
2 取得服务器数据,调用客户端的回调
是的,是这样做的,也实现了,可是还有些让人知其然,不知所以然;猜想应该类似于ajax原始做法原理一致,就看了下数据的情况。
从这里开始查找 function CallServer(args,context){WebForm_DoCallback('__Page',args,ReceiveServerData,'this is context from server',null,false);alert(context);}
该接口如此定义:
public interface ICallbackEventHandler
{
// Summary:
// Returns the results of a callback event that targets a control.
//
// Returns:
// The result of the callback.
string GetCallbackResult();
//
// Summary:
// Processes a callback event that targets a control.
//
// Parameters:
// eventArgument:
// A string that represents an event
// argument to pass to the event handler.
void RaiseCallbackEvent(string eventArgument);
}
{
// Summary:
// Returns the results of a callback event that targets a control.
//
// Returns:
// The result of the callback.
string GetCallbackResult();
//
// Summary:
// Processes a callback event that targets a control.
//
// Parameters:
// eventArgument:
// A string that represents an event
// argument to pass to the event handler.
void RaiseCallbackEvent(string eventArgument);
}
1 fire回调事件 2 得到回调结果
具体的例子是这样的: http://www.codeproject.com/aspnet/clientcallback.asp
服务器端:
1 实现两个方法 2 GetCallbackEventReference 注册客户端的回调事件
客户端:
1 一个向服务器请求的js函数,这里回用到的注册的 Callserver函数
2 取得服务器数据,调用客户端的回调
是的,是这样做的,也实现了,可是还有些让人知其然,不知所以然;猜想应该类似于ajax原始做法原理一致,就看了下数据的情况。
从这里开始查找 function CallServer(args,context){WebForm_DoCallback('__Page',args,ReceiveServerData,'this is context from server',null,false);alert(context);}
WebForm_InitCallback();
没有找到两个函数 WebForm_DoCallback WebForm_InitCallback(); 于是跟踪http的情况 发现 WebResource.axd?d=DFODalfbD7c-8zhCoSX8DQ2&t=632984018010150749 HTTP/1.1
这个文件,晕,里面包含了所有的具体实现,基本原理是这样的:
1 客户端post一个请求 格式如: __EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPD
wUKLTYxMTMyNjg0OQ9kFgICAw9kFgICAQ8QDxYGHg1EYXRhVGV4dEZpZWxkBQpjdXN0b21lcmlkHg5EY
XRhVmFsdWVGaWVsZAUKY3VzdG9tZXJpZB4LXyFEYXRhQm91bmRnFgIeCG9uY2hhbmdlBRhyZXR1cm....
2 xmlhttprequest 开始等待返回状态,当然已经设置其回调动作
3 根据post内容,判断谁的动作,是否有回调请求,如果有回调请求,那么执行那实现的两个方法,返回数据,
格式如:
760|/wEWXALKkYL/DwKH2/LzCgKR1eNNAqy9g88MAs26w8oHAszhmvoGAvvL76oLAq65/5UEAuvF4JABAoW
mSwMIx5ySwsfi0= xmldocument
4 客户端的对象接到已经处理完请求的状态,把数据转交给客户端处理函数 (arg,xmltext)
5 销毁客户端的xmlhttpreuest对象
这就是其实现的内容,如果你对其细节还是感情绪,那就自己看看其js了。太长就不贴了。
- ICallbackEventHandler 小析
- ICallbackEventHandler
- ICallbackEventHandler
- ICallbackEventHandler 接口
- ICallbackEventHandler的用法
- ICallbackEventHandler接口实现多级联动
- ajax 之 ICallbackEventHandler接口使用
- MSDN勘误-关于ICallbackEventHandler接口
- ICallbackEventHandler实现回调功能
- ICallbackEventHandler-->服务器回发事件
- (Dotnet2.0)ICallbackEventHandler实现无刷新操作
- (Dotnet2.0)ICallbackEventHandler实现无刷新操作
- ICallbackEventHandler实现无刷新回调
- 利用ICallbackEventHandler接口实现异步调用
- c#通过ICallbackEventHandler接口实现回调
- 利用ICallbackEventHandler接口实现异步调用
- ASP.NET 2.0 Client Callback (ICallBackEventHandler)
- GridView无刷新分页的实现(ICallBackEventHandler)
- 国家的名字可以如此...浪漫
- 80后的101个特征,看你有哪些???
- CSS中布局div高度自适应的方法
- 转贴:Microsoft OLE DB Provider for SQL Server错误80040e37
- 韩国学习
- ICallbackEventHandler 小析
- java中的时间操作
- 今天你中毒了吗?
- JMS学习笔记
- java的文件操作
- jsp语法
- ASP.NET 2.0使用Web Part创建应用程序之一
- 存储过程学习!
- ASP.NET 2.0使用Web Part创建应用程序之二