关于ICallbackEventHandler的疑问

近日,由于需要,我写了一个webcontrol,并在实现了ICallbackEventHandler,目的是根据传进来的参数进行逻辑处理,然后返回值。

我下面的例子目的是从1到5调用异步函数,然后在回调函数将1到5这几个数值相加。但是,由于调用异步函数的过程没有被阻塞,因此值一直为0.

特别注意:我在使用this.Page.ClientScript.GetCallbackEventReference(this, "argument", "callbackFunc", "context",false)的时候,最后一个参数的true或false都测试过(也就是同步异步都不行)。

由于比较急,且个人弄了很久,没个头绪,因此斗胆发到首页来,请各位高人们帮忙参谋参谋。。。拜谢先。

猛击这里下载源码->/Files/McJeremy/AjaxCountTest.rar 

源码是用vs2005+sp1创建的(ASP.NET 网站类型) 

下面是代码 :

 1 namespace Test
 2 {
 3     /// <summary>
 4     /// AjaxControl 的摘要说明
 5     /// </summary>
 6     public class AjaxControl : WebControl, ICallbackEventHandler
 7     {
 8         public AjaxControl()
 9         {
10         }
11 
12         protected override void Render(HtmlTextWriter writer)
13         {
14             writer.Write("Test tttt");
15             writer.Write(GetAjaxFunction());
16         }
17        //生成异步函数
18         private string GetAjaxFunction()
19         {
20             System.Text.StringBuilder sb = new System.Text.StringBuilder();
21             sb.Append("<script type=\"text/javascript\">");
22             sb.Append("function callServer(argument,context){");
23             sb.Append(this.Page.ClientScript.GetCallbackEventReference(this"argument""callbackFunc""context",false));
24             sb.Append("}</script>");
25             return sb.ToString();
26         }
27 
28         #region ICallbackEventHandler 成员
29 
30         private string rValue;
31 
32         public string GetCallbackResult()
33         {
34             return rValue;
35         }
36 
37         public void RaiseCallbackEvent(string eventArgument)
38         {
39             //此处不作处理,直接返回
40             rValue = eventArgument;
41         }
42 
43         #endregion
44     }
45 }

 

JS文件
 1 var envir={count:0};
 2 function callbackFunc(data,context)
 3 {
 4    envir.count+=parseInt(data,10);
 5 }
 6 
 7 window.onload=function()
 8 {
 9    //循环调用异步函数
10     for(var i=1;i<5;i++)
11     {
12         callServer(i,'');
13     }
14         
15         //此处不等callServer执行完成后,就执行了。导致envir.count为0
16         //而按设想,envir.count的值应该是1+2+3+4 = 10
17     alert(envir.count);
18 }

 

最终调用的default.aspx:

 

 1 <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
 2 
 3 <%@ Register Assembly="ClassLibrary" Namespace="Test" TagPrefix="cc1" %>
 4 
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 6 
 7 <html xmlns="http://www.w3.org/1999/xhtml" >
 8 <head runat="server">
 9     <title>无标题页</title>
10     <script type="text/javascript" src="JScript.js">
11     
12     </script>
13 </head>
14 <body>
15     <form id="form1" runat="server">
16     <div>
17         <cc1:AjaxControl ID="AjaxControl1" runat="server" />       
18     </div>
19     </form>
20 </body>
21 </html>
22 

 

 

 

转载于:https://www.cnblogs.com/McJeremy/archive/2010/06/18/1759920.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NIO学习--缓冲区

Buffer其实就是是一个容器对象&#xff0c;它包含一些要写入或者刚读出的数据。在NIO中加入Buffer对象&#xff0c;体现了新库与原I/O的一个重要区别。在面向流的I/O中&#xff0c;您将数据直接写入或者将数据直接读到Stream对象中。在NIO库中&#xff0c;所有数据都是用缓冲区…

二分图匹配之匈牙利算法

二分图的基本概念&#xff1a; 二分图又称作二部图&#xff0c;是图论中的一种特殊模型。 设G(V,E)是一个无向图&#xff0c;如果顶点V可分割为两个互不相交的子集(A,B)&#xff0c;并且图中的每条边(i&#xff0c;j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j …

使用javascript打开模态对话框

1. 标准的方法 <script type"text/javascript"> function openWin(src, width, height, showScroll){ window.showModalDialog (src,"","location:No;status:No;help:No;dialogWidth:"width";dialogHeight:"height";sc…

nagios监控系统搭建!!

http://kerry.blog.51cto.com/172631/107831/转载于:https://www.cnblogs.com/iLumia/p/4237640.html

Go-select和switch的使用区别

Go-select和switch的使用区别 1 package main2 3 import (4 "fmt"5 "time"6 )7 8 func main() {9 i : 2 10 fmt.Print("Write ", i, " as ") //Write 2 as two 11 switch i { 12 case 1: 13 fmt.Prin…

java 终结此段代码并重新运行_Java垃圾回收

好久没看关于java的书了, 最近, 看了James Gosling的<>, 做了一些读书笔记. 这部分是关于垃圾回收的.1.垃圾回收对象是使用new创建的, 但是并没有与之相对应的delete操作来回收对象占用的内存. 当我们完成对某个对象的使用时, 只需停止该对象的引用:->将引用改变为指向…

Enumerable#zip特性

看到文章Zip operator in Linq with .NET 4.0&#xff0c; Enumerable#zip是Ruby 1.8开始出现的特性&#xff0c;.NET 4/Silverlight 4也有这样的特性。与 Ruby 类似&#xff0c;Enumerable 同样关注你的感受&#xff0c;它为一些行为提供了多个名称。这主要是为了降低学习难度…

-bash: ulimit: pipe size: cannot modify limit: Invalid argument

从root账号切换到oracle账号时&#xff0c;出现了“-bash: ulimit: pipe size: cannot modify limit: Invalid argument”提示&#xff0c;一般出现这个错误是因为在设置.bash_profile时&#xff0c;没有注意空格的缘故造成。例如&#xff08;注意红色部分&#xff09; 例1&…

linux 安装nginx php mysql 配置文件在哪_linux下 php+nginx+mysql安装配置

我主要是用来安装php&#xff0c;以及nginx和php的交互。一 安装插件可以选择YUM安装或者源码编译安装gccgcc-czlibpcrepcre-devellibeventlibevent-devellibxml2libxml2-devellibmcryptlibmcrypt-develcurl-devellibpng-devellibtool-ltdl-develgd-developensslopenssl-develn…

项目开发经验谈之:设计失败的挫败感

项目经验谈之&#xff1a;设计失败的挫败感--老资格给你的压力 前言&#xff1a;最近一段时间似乎感触特别的多&#xff0c;心情也特复杂的。也许你曾经有过同样的际遇&#xff0c;也许没有&#xff0c;但是我的目的只有一个&#xff1a;分享&#xff0c;勉励&#xff01; 系列…

JDBC原理之层次结构

目录 JDBC的层次结构前言Collection角色Statement角色ResultSet角色JDBC工作的基本流程JDBC的层次结构 前言 JDBC API提供了以下接口和类&#xff1a; DriverManager: 这个类管理数据库驱动程序的列表。确定内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序的连…

Java异常处理机制很有意思

版权声明&#xff1a;欢迎转载&#xff0c;请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/43015379 前言&#xff1a;在网络上看到一篇《深入理解Java异常处理机制》&#xff0c;看完感觉自己也有一点小想法&#xff0c;的确在很多Java学者的眼里&…

你如何去管理你的团队?

一下是我自己也不知道如何去回答的问题&#xff0c;或者只是想着这么解决&#xff0c;写在这里&#xff0c;那一天等我知道答案了再来给自己解答和完善。 作为一个团队负责人&#xff0c;你如何去管理的你团队&#xff0c;你怎么样来做开始启动你的团队&#xff0c;计划&#x…

2019-5-30-websocket下readyState常量

0 (CONNECTING) 正在链接中1 (OPEN) 已经链接并且可以通讯2 (CLOSING) 连接正在关闭3 (CLOSED) 连接已关闭或者没有链接成功转载于:https://www.cnblogs.com/zhangjiajun9404/p/10947697.html

Java自动注入默认_java – 自动注入与Spring

更新&#xff1a;2016年2月自动装配将在Spring Framework 4.3中正式支持。实现可以在这个GitHub commit看到。你不能自动安装的最终原因是Spring的DefaultListableBeanFactory.findAutowireCandidates(String&#xff0c;Class&#xff0c;DependencyDescriptor)方法的实现明确…

摘要

《秦前历史》13章 姜子牙 有一天&#xff0c;武王姬发问姜子牙&#xff1a;“我打算减轻刑罚而又能 树立我的权威&#xff0c;少施行一些赏赐而又能使人们从善&#xff0c;少颁布一些政令法规而民众又都能自觉按一定的规范行事。请问师尚父&#xff0c;怎样做才能实现这一点呢&…

关于ole

在word文档里&#xff0c;当插入一个图片或是电子表格&#xff0c;从而生成一个复合文档&#xff0c;这其中用到ole规范OLE文档&#xff1a;完善了早期的混合文档功能&#xff0c;不仅支持简单链接和嵌入&#xff0c;还支持在位激活、拖放等功能有一片文章你可以看看OLE概述 OL…

Uva489

Hangman Judge UVA - 489 In “Hangman Judge,” you are to write a program that judges a series of Hangman games. For each game, the answer to the puzzle is given as well as the guesses. Rules are the same as the classic game of hangman, and are given as f…

HTML5实现刮奖效果

原文:HTML5实现刮奖效果要实现刮奖效果&#xff0c;最重要的是要找到一种方法&#xff1a;当刮开上层的涂层是就能看到下层的结果。而HTML5的canvas API中有一个属性globalCompositeOperation&#xff0c;这个属性有多个值&#xff0c;而实现刮奖效果要用到的值就是destination…

Java多线程复习_Java多线程复习

一、线程的基本概念简单的说&#xff1a;线程就是一个程序里不同的执行路径在同一个时间点上cpu只会有一个线程在执行Java里的多线程是通过java.lang.Thread类来实现的每个线程都拥有自己独立的方法栈空间二、java线程的创建和启动第一种定义线程类实现Runnable接口Thread myTh…