日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于ICallbackEventHandler的疑问

發布時間:2023/12/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于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

總結

以上是生活随笔為你收集整理的关于ICallbackEventHandler的疑问的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。