`
buliangniu
  • 浏览: 92300 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

六步使用ICallbackEventHandler实现无刷新回调

    博客分类:
  • C#
阅读更多

AJAX技术所提倡的无刷新回调,在原来的技术中需要写大量的JavaScript代码或使用一些AJAX框架,使得开发效率和可维护性大大降低。其实ASP.NET2.0中,已经提供了这样的接口,这就是ICallbackEventHandler
     关于ICallbackEventHandler网上已经有很多文章介绍了,这篇实为画蛇添足。

ICallbackEventHandler存在于System.Web.UI中,我们先做一个非常简单的例子来试用一下。

    第一步,在VS2005中建立一个新的WEB窗件。
    第二步,在ASPX中,放上一段HTML代码(如下):

<body>
<form id="form1" runat="server">
<div>
<button onclick="CallServer()">CallServer</button>
</div>
</form>
</body>
<body> <form id="form1" runat="server"> <div> <button onclick="CallServer()">CallServer</button> </div> </form> </body>



第三步,然后在<HEAD></HEAD>中放入一段JavaScript脚本:

<script type="text/javascript">
function CallServer()
{
var product = "测试";
<%= ClientScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%>;
}
function ReceiveServerData(rValue)
{
alert(rValue);
}
</script>


第四步,在此ASPX的后台CS代码中,继承ICallbackEventHandler接口,并实现接口中的两个方法:
ICallbackEventHandler.GetCallbackResult()
     和
ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)

    第五步,增加一个变量CallBackValue,并修改接口的两个方法为:

private string CallBackValue = string.Empty;
string ICallbackEventHandler.GetCallbackResult()
{
return CallBackValue + ",ok";
}
void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
{
this.CallBackValue = eventArgument;
}

 第六步,运行,界面上会出现一个按钮,点击后,会将“测试”这个字符串传至后台,后台C#代码将字符串加上“,OK”后返回给客户端的JavaScript代码,并显示。

     以上六步,就可以实现无刷新回调了。现在,我们来分析一下几段代码。
     先看第三步中的JavaScript代码,其中的CallServer()方法中进行了回调,回调的语句为:

<%= ClientScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%>;



里面四个参数中第二个参数指定将product这个JavaScript中的字符串变量传回后台,第三个参数指定了从后台返回时接收返回信息的JavaScript方法ReceiveServerData(string Value)。

     第五步中后台的两个方法,一个ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)用来接收前台JavaScript中传来的字符串变量,并赋值给内部变量this.CallBackValue,另一个方法ICallbackEventHandler.GetCallbackResult()将变更后的内部变量this.CallBackValue返回给前台JavaScript方法ReceiveServerData(string Value)。

     调用的顺序是: (前台)CallServer() --> (后台)ICallbackEventHandler.RaiseCallbackEvent(string eventArgument) --> (后台)ICallbackEventHandler.GetCallbackResult() --> (前台)ReceiveServerData(string Value)。

     整个调用过程非常简单,而其中非常关键的一步是第三步的
<%= ClientScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%>;
这个方法,以下是从网上找来的一段资料,大家可以看看。

GetCallbackEventReference使得客户端方法在客户端请求结束时得到回收。 它也让CallBackManager 确定产生哪种回叫方法。 在这个例子内使用的被重载的方法是:

public string GetCallbackEventReference(
string target, string argument,
string clientCallback, string  context,
string clientErrorCallback)


Table 1. GetCallBackEventReference 方法的参数描述。
Parameters Description target ID of the page where the callback invocation is handled. For more see the other overloaded options available in the next immediate section.In our sample "this" is the argument value, since the callback is handled in the same page.   argument This is the parameter defintion used to send value to the server. This value is received by parameter "eventArgument" at the server end using the RaiseCallbackEvent event."arg" becomes the first parameter name in our sample. The value is passed through this argument from the client. clientCallback Method name of the callback that is invoked after successful server call."CallBackHandler" is the method name that handles the callback.    context A parameter that is associated with the "argument" from the client. It usually should be used to identify the context of the call. You will understand this better from the sample implementation.In the sample "ctx" is just another parameter definition used. The value for this is passed from the client. clientErrorCallback Name of the method that is called from the CallBackManager in case of any errors.
从这个方法返回的string是:

__doCallback('__Page',arg,CallBackHandler,ctx, ErrorCallBack)


另一个重载方法是:

public string GetCallbackEventReference(
Control control, string argument,
string clientCallback, string  context)
public string GetCallbackEventReference(
Control control, string argument,
string clientCallback,  string  context,
string clientErrorCallback)
分享到:
评论

相关推荐

    ICallbackEventHandler接口无刷新源码20130120

    ICallbackEventHandler接口无刷新源码 功能介绍: 在 ASP.NET 网页的默认模型中,用户会与页交互,单击按钮或执行导致回发的一些其他... 可以使用ICallbackEventHandler接口,使其能执行客户端回调。在客户端回调中。

    客户端无刷新回调,ICallBackEverHandler实现客户端回调

    具体到这个例子,"ServerTime.aspx"和"ServerTime.aspx.cs"很可能是实现无刷新回调功能的Web页面和对应的代码后文件。"ServerTime.aspx"可能包含HTML和JavaScript代码,用于初始化回调、处理用户交互以及显示回调...

    ASP.NET基于ICallbackEventHandler的轻量级异步回调

    ASP.NET中的ICallbackEventHandler接口是实现轻量级异步回调的一种方法,主要用于提高Web应用程序的性能和用户体验。这种技术允许页面部分更新,而无需整个页面重新加载,类似于AJAX的效果,但比AJAX更为简单,因为...

    在 ASP.NET 网页中实现回调

    在 ASP.NET 中,客户端回调...为了支持回调,页面或用户控件需要实现 ICallbackEventHandler 接口。对于单文件页或用户控件,可以在页面指令中声明 `@Implements` 指令,如以下示例所示: - Visual Basic: ```vbnet ...

    ICallBackEventHandler(ajax应用)

    ICallBackEventHandler 是一个在ASP.NET中用于处理服务器端异步回调事件的接口。这个接口在AJAX(Asynchronous JavaScript and XML)应用中扮演着重要角色,它允许Web应用程序实现部分页面更新,从而提高用户体验,...

    ICallbackEventHandler接口实现多级联动

    在.NET框架中,`ICallbackEventHandler`接口是一个用于实现页面间无刷新通信的重要工具,尤其在构建复杂的Web应用程序时,如多级联动下拉菜单。这种功能可以提高用户体验,因为用户无需等待整个页面重新加载就能看到...

    Repeater无刷新分页示例

    "Repeater无刷新分页示例"是一个实现此目标的技术方案,它利用了ICallbackEventHandler接口和GetCallbackEventReference方法来创建一个无需页面完全刷新即可切换分页的Repeater控件。这种技术大大提升了用户体验,...

    asp.net 2.0使用ajax实现客户端回调功能详解

    在探讨ASP.NET 2.0如何使用Ajax实现客户端回调功能之前,我们首先简要回顾一下ASP.NET 2.0和Ajax的基本概念。 ### ASP.NET 2.0简介 ASP.NET 2.0是Microsoft推出的一个用于开发Web应用程序的框架,它是.NET ...

    .net中的回调实例

    在ASP.NET Web Forms中,客户端回调(Client Callbacks)是实现页面与服务器之间异步通信的一种方式,无需完整刷新整个页面。这种技术提高了用户体验,因为只有部分页面内容会更新,而不是整个页面。 在提供的示例...

    ASP.NET 2.0 正式版中无刷新页面的开发.

    **实现无刷新页面的步骤** 1. **实现ICallbackEventHandler接口** 首先,你需要在你的页面类中实现这个接口。例如,在默认的Default.aspx.cs文件中,可以声明一个类,继承自Page,并实现ICallbackEventHandler接口...

    C#回调简介

    接下来,在C#代码中,我们需要实现`ICallbackEventHandler`接口来处理客户端的回调请求: ```csharp public partial class YourPage : System.Web.UI.Page, ICallbackEventHandler { public string myStr = string...

    如何:实现ICallBackEventHandler(从客户端调用服务器端代码)

    总结,实现ICallBackEventHandler接口使得ASP.NET页面能够实现异步回调,提高应用程序的响应性和效率。通过结合JavaScript和C#,你可以轻松地从客户端调用服务器端代码,而无需整个页面回发。这在处理大量数据、实时...

    局部刷新源码(C#)

    这个接口定义了两个方法:`GetCallbackEventResult`和`RaiseCallbackEvent`,它们分别用于处理服务器端的回调事件和生成返回给客户端的结果。为了实现在服务器端处理局部刷新,你需要创建一个实现了`...

    ASP.NET中如何实现回调

    ASP.NET回调技术是一种在Web应用程序中实现页面无刷新更新的方式,它可以提高用户体验,因为只更新必要的数据,而不是整个页面。回调本质上是基于Ajax调用,但ASP.NET提供了一种简化的方式来处理这些调用,通过内置...

    Asp.net回调技术Callback学习笔记

    使用回调,可以在不刷新整个页面的情况下,向服务器提交数据并接收处理结果。这一特性对于提升用户体验、减少服务器负载等方面非常有帮助。以下是一些详细知识点。 1. 回调(Callback)概念: 回调技术允许页面中的...

    Ajax实现手机号码查询

    这个接口主要用于处理页面的无刷新回调,是ASP.NET提供的一种实现Ajax功能的方式。在ASP.NET中,当一个控件触发事件时,如果该事件需要与服务器进行交互但无需整个页面回发,我们可以使用此接口。它包含两个方法:`...

    利用Asp.Net回调机制实现进度条

    总结来说,Asp.Net回调机制通过异步通信实现了不刷新页面的实时数据交互,非常适合构建进度条或实时反馈的场景。在本例中,通过结合HTML、JavaScript、CSS和服务器端代码,我们成功地创建了一个简单的进度条,展示了...

    datawindwo.net 程序

    通过实现ICallbackEventHandler接口,自定义控件可以具备脚本回调能力,利用后台往返(round-trips)获取服务器数据并更新用户界面。脚本回调的关键在于,它利用了“Microsoft.XMLHTTP”ActiveX对象(非IE浏览器使用...

    编写轻量ajax组件01-与webform平台上的各种实现方式比较

    而ICallbackEventHandler接口是.NET框架提供的用于处理异步回调请求的接口。通过这个接口,开发者可以编写自己的回调逻辑,从而实现Ajax功能。使用这种方式时,开发者需要自己处理前端和后端的交互逻辑,包括生成和...

Global site tag (gtag.js) - Google Analytics