关于ICallbackEventHandler的疑问
近日,由于需要,我寫了一個webcontrol,并在實現(xiàn)了ICallbackEventHandler,目的是根據(jù)傳進來的參數(shù)進行邏輯處理,然后返回值。
我下面的例子目的是從1到5調(diào)用異步函數(shù),然后在回調(diào)函數(shù)將1到5這幾個數(shù)值相加。但是,由于調(diào)用異步函數(shù)的過程沒有被阻塞,因此值一直為0.
特別注意:我在使用this.Page.ClientScript.GetCallbackEventReference(this, "argument", "callbackFunc", "context",false)的時候,最后一個參數(shù)的true或false都測試過(也就是同步異步都不行)。
由于比較急,且個人弄了很久,沒個頭緒,因此斗膽發(fā)到首頁來,請各位高人們幫忙參謀參謀。。。拜謝先。
猛擊這里下載源碼->/Files/McJeremy/AjaxCountTest.rar?
源碼是用vs2005+sp1創(chuàng)建的(ASP.NET 網(wǎng)站類型)?
下面是代碼 :
?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????????//生成異步函數(shù)
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????//循環(huán)調(diào)用異步函數(shù)
10?????for(var?i=1;i<5;i++)
11?????{
12?????????callServer(i,'');
13?????}
14?????????
15?????????//此處不等callServer執(zhí)行完成后,就執(zhí)行了。導(dǎo)致envir.count為0
16?????????//而按設(shè)想,envir.count的值應(yīng)該是1+2+3+4?=?10
17?????alert(envir.count);
18?}
?
最終調(diào)用的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?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/McJeremy/archive/2010/06/18/1759920.html
總結(jié)
以上是生活随笔為你收集整理的关于ICallbackEventHandler的疑问的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 仿淘宝首页图片切换
- 下一篇: 抖音网红彩虹夫妇自曝:一场直播带货2.3