提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|其它|编辑:郝浩|2011-08-15 15:06:26.000|阅读 1053 次
概述:本文主要讲述C#中的WEB开发的回调函数的实现,希望对大家有帮助。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
首先,在实现这个小DEMO的之前应该了解到什么叫回调函数,从MSDN上找来回调函数的定义比较晦涩,不知道在哪看过对回调函数的一种抽象的理 解,什么是回调?有人这么说:“发布者说,当我遇到什么事的时候,我就通知大家,有需要通知的就把电话号码给我,等那件事发生时,我就打电话通知大 家;”。
而编程中的回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数。回调函数是一个工作流的一部分,由工作流来决定函数的调用(回调)时机。(比较难懂吧)
为什么会有回调函数,回调函数能帮助我们解决什么样的开发问题,大家都知道AJAX吧,AJAX的处理时异步的,主要原理是将数据发送到另一个页面 处理后再将处理结果返回当前页面。而回调函数也是类似于这种AJAX异步的方式,不同之处就是在于回调函数是将前台数据发送到本页面的后台处理程序中处理 后再将数据发送回来。至于你想选择用哪种方式实现异步,两种方式都无可厚非。在实际项目开发中我用回调函数实现的是对某一内容加关注(类似于博客加关 注),需要将ID号发送到后台实现数据库的交互。因为这样可以在同一个页面调用相同的参数处理,比较方便。参数可以在多个方法体中应用。
这个小DEMO实现的功能就是前台有一个文本框,文本框里输入数字,将数字通过回调函数的形式发送到后台进行奇数和偶数进行处理,如果是奇数返回1,是偶数返回0,
要在后台实现回调函数,必须在后台的页面类实现 System.Web.UI.ICallbackEventHandler的接口,而该接口必须显示实现两个方法,具体代码参考如下
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Collections;
public partial class _Default : System.Web.UI.Page,System.Web.UI.ICallbackEventHandler
{
public string _getClientParm;//定义一个字符串的变量用以接受和传递前台发送到后台的数据
protected void Page_Load(object sender, EventArgs e)
{
}
#region ICallbackEventHandler 成员
/// <summary>
/// 经过后台服务器处理的数据返回给前台客户端
/// </summary>
/// <returns></returns>
public string GetCallbackResult()
{
//throw new Exception( "The method or operation is not implemented.");
//在真实的应用中前台的数据会经过以下的逻辑代码进行处理,下面我们来模拟一个情况。
/* 若前台发来的字符串转换为数字,若是偶数返回0,若是奇数返回1.
*
* */
string returnClientResult= "";
try
{
int i = Int32.Parse(_getClientParm);
if (i % 2 == 0)
{
returnClientResult = "0";
}
else
{
returnClientResult = "1";
}
}
catch
{
throw new Exception( "异常信息.........");
}
return returnClientResult;
}
/// <summary>
/// 获取客户端发送至后台服务器端的参数
/// </summary>
/// <param name="eventArgument">前台客户端发送到后台服务器端的参数</param>
public void RaiseCallbackEvent(string eventArgument)
{
//throw new Exception( "The method or operation is not implemented.");
_getClientParm = eventArgument;
}
#endregion
}
上面都有注释,而在前台中的页面代码如下所示:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="//www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script type="text/javascript" language="javascript">
function callServer()
{
var sendServerArg = document.getElementById( "Txt_Input").value;
<%=ClientScript.GetCallbackEventReference(this, "sendServerArg", "receiveServerResult", null, true)%>; //这个方法实现的是前台和后台的数据通信。
}
function receiveServerResult(result)
{
if(result == "0")
{
alert( "传入到服务器的参数是偶数");
}
else
{
alert( "传入到服务器的参数是奇数");
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="Txt_Input" runat="server"></asp:TextBox>
<asp:Button ID="Btn_CallBack" runat="server" Text="调用回调函数" OnClientClick="callServer();" />
</div>
</form>
</body>
</html>
运行结果如下:
这个DEMO很简单的,但是原理和方法基本就是这样,可以实现很复杂的东东,比如页面数据太大的时候,用这个减少前台和后台的数据通信量,对于从后 台返回到前台的数据,在前台用JavaScript处理,如果熟悉JQuery的话更能处理好后台数据结果在前台数据的处理和显示。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:博客园面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢