您现在的位置: 济宁之窗 >> 网络学院 >> 程序开发 >> WEB开发 >> ASP语言 >> 教程正文
asp.net客户端回调功能的实现机制

来源:博客网 点击: 更新:2007-8-19 10:44:00
实现的过程基本上就是:让要实现客户端回调功能的页面或者空间实现System.Web.UI.ICallbackEventHandler的接口,即2个方法:void RaiseCallbackEvent(string eventArgument),这个是当客户端触发服务器端事件的委托方法,string GetCallbackResult();这个是返回客户端需要的值,只能是string 型的,当然你也可以返回一个Json串。
然后在pageload的时候注册脚本到客户端:在这里注册一个CallServer方法来调用服务器端方法,ReceiveServerData来捕获服务器返回的结果。当然你也可以使用一个方法来捕获服务器端的错误,详见Page.ClientScript.RegisterClientScriptBlock这个方法的MSDN解释。
这样就能实现客户端的回调服务器端事件,并返回值。
生成好页面后,查看源代码:
首先是多了一个js资源文件,多了一行这样的代码:

在body快结束的时候还有一段这样的代码:
WebForm_InitCallback();好,这些应该就是asp.net为了实现客户端回调所作的补充工作了吧,咱们来研究吧。
首先看js资源文件(20多K,汗一个...)。先在资源文件里面找到这个方法,WebForm_InitCallback();
方法如下:
1function WebForm_InitCallback() {
2 var count = theForm.elements.length;
3 var element;
4 for (var i = 0; i < count; i++) {
5 element = theForm.elements[i];
6 var tagName = element.tagName.toLowerCase();
7 if (tagName == "input") {
8 var type = element.type;
9 if ((type == "text"    type == "hidden"    type == "password"   
10 ((type == "checkbox"    type == "radio") & element.checked)) &&
11 (element.id != "__EVENTVALIDATION")) {
12 WebForm_InitCallbackAddField(element.name, element.value);
13 }
14 }
15 else if (tagName == "select") {
16 var selectCount = element.options.length;
17 for (var j = 0; j < selectCount; j++) {
18 var selectChild = element.options[j];
19 if (selectChild.selected == true) {
20 WebForm_InitCallbackAddField(element.name, element.value);
21 }
22 }
23 }
24 else if (tagName == "textarea") {
25 WebForm_InitCallbackAddField(element.name, element.value);
26 }
27 }
28}这个方法就是把表单里面所有的值全部装载到一个键值对里面去。
附WebForm_InitCallbackAddField(element.name, element.value);方法实现:
function WebForm_InitCallbackAddField(name, value) {
var nameValue = new Object();
nameValue.name = name;
nameValue.value = value;
__theFormPostCollection[__theFormPostCollection.length] = nameValue;
__theFormPostData += name + "=" + WebForm_EncodeCallback(value) + "&";
}
function WebForm_EncodeCallback(parameter) {
if (encodeURIComponent) {
return encodeURIComponent(parameter);
}
else {
return escape(parameter);
}
}
那么就是asp.net在初始化客户端回调功能的时候,其实就是将表单里面的所有键值对全部装载到一个全局的键值对里面去了。

然后,咱们来看看unction CallServer(arg, context){ WebForm_DoCallback('__Page',arg,ReceiveServerData,context,null,false);}所作的工作。
在示例中,点击按钮,就触发了CallServer方法,

function LookUpStock()
{
var lb = document.

[1] [2] [3] [4] 下一页

发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
 
  • 上一条教程:
  •  
  • 下一条教程:

  •  焦点推荐
     [业内动态]爱思美绿色邮箱 提升网络沟通品质
     [杂类工具]Norton安全特警实用技巧四则!
     [杂类工具]YOK 给IE请个免费“警察”(图)
     [杂类工具]宽带时代 看电视还需要电视盒吗?
     [杂类工具]收费的QQ代理免费使用的时代到了
     [杂类工具]体积小、纯绿色--极品列车时刻表
     [杂类工具]图像管理专家iSee新功能画笔涂鸦
     [杂类工具]金山词霸 2007 常见问题解答!
     [杂类工具]小巧软件轻松提取Flash文件资源
     [杂类工具]教你用Web2Pic轻松截取Web页面
     [杂类工具]爱音乐(iMusic),边听边下载
     [杂类工具]Net Transport突破单线程下载限制
     [杂类工具]老鸟传技 “打印”的Flash电子书
     [杂类工具]软件开发实战视频教程之Eclipse篇
    最新热门评论
    热 门 话 题

    ASP.NET调用oracle实现快速分页
    招 商 信 息
    热 门 推 荐
  • 此栏目下没有推荐教程
  • 此栏目下没有热点推荐教程
  • 校 园 周 刊
    推荐教程 性感意大利 丰满女郎甜
    推荐教程 浪漫的法国女郎 丰满裸
    推荐教程 有趣好用的MSN动态个性
    推荐教程 QQ小技巧新发现,为传
    推荐教程 DW MX实例:制作产品展
    推荐教程 DW MX实例:实现电子商
    推荐教程 DW MX实例:给产品下订
    推荐教程 DW MX实例:实现产品搜
    热 门 信 息
     2006两岸祭孔大典
     济宁市市中区首届邻居
     第二期--009
     转让正在经营的儿童摄
     全市商业贿赂典型案例…
     济宁市治理商业贿赂领…
     夏天来临前的20个防晒
     周总理珍藏彩色画册 有
     性感而随意的诱惑 流行
     泗水文化历史
     泗水地方风情
     泗水乡情

    本站部分内容由用户或网友提供 济宁之窗不承担由于内容的合法性所引起的一切争议和法律责任
    如果您认为侵犯了您的权益 请来电或来函告知 本站将立刻停止使用
    Copyright © 2002-2006 济宁之窗 All Rights Reserved.
    Tell:2283611 2283612 服务 web@jnzc.net 24小时值班电话:3321199
    经营许可证:鲁B2-20031025号