知识大全 浅析ASP.NET 2.0 Client Callback

Posted 函数

篇首语:少年乘勇气,百战过乌孙。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 浅析ASP.NET 2.0 Client Callback相关的知识,希望对你有一定的参考价值。

浅析ASP.NET 2.0 Client Callback  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

ASP NET Callback 使得ASP NET Server端控件能够调用服务端的方法而不需要执行一个完整的Postback过程 也就是说使得Server端控件可以很好的支持Ajax Callback不同于Postback之处在于向服务器发送请求时只有ViewState和用户自定义信息被发送到服务器端 请求完毕后 只返回用户自定义结果 而不会从Render页面    GridView控件正是使用了这个技术来实现无刷新的分页及排序功能 那么它是如何实现的哪 我们又如何在自定义控件中添加该功能哪?本文将会简单地阐述如何使用ASP NET Callback来实现Ajax  

   ICallbackEventHandler 接口

  ASP NET Server端控件可以通过实现ICallbackEventHandler 接口来接受客户端Callback事件 ICallbackEventHandler 接口声明

  

  

   public interface ICallbackEventHandler    string GetCallbackResult();    void RaiseCallbackEvent(string eventArgument);

  RaiseCallbackEvent负责处理客户端回调事件 其中方法参数eventArgument是客户端脚本在触发Callback时提供的 该方法将会依赖于eventArgument参数来进行处理 GetCallbackResult则负责将处理结果作为String返回给客户端脚本 当Callback完成后客户端脚本将会根据得到的处理结果 进行页面局部更新

   CallbackEventReference

  那么怎么样才能注册一段客户端脚本来触发Callback 还需要做些什么哪?

  ClientScriptManager类用于管理Web页面中的客户端脚本 提供了一系列的方法来注册脚本 并且还可以获得指定客户端脚本函数的引用 通过ClientScriptManager类的GetCallbackEventReference方法我们可以获取一个对客户端函数的引用 当该函数在客户端被调用时 将启动一次客户端回调

  GetCallbackEventReference方法声明

  

  

  public string GetCallbackEventReference (Control control string argument string clientCallback string context string clientErrorCallback bool useAsync)

  第一个参数指的是实现ICallbackEventHandler接口的服务器端控件 第二个参数将被传递给在服务器端执行的RaiseCallbackEvent方法 它可以是一个JavaScript函数调用表达式 第三个参数是一个JavaScript函数名 在Callback完成后 该函数将被调用 同时服务器端函数GetCallbackResult的执行结果也将作为这一个函数的参数 第四个参数是当前执行的Callback的上下文 这个参数也可以是一个JavaScript函数调用表达式   第五个参数是一个JavaScript函数名 在Callback执行的过程中如果有错误产生 该函数将被调用 第六个参数是一个Bool值来确定当前Callback应该被同步执行还是异步执行

  获取这个Callback客户端函数的引用之后 我们可以注册一个新的客户端函数来调用它 然后再客户端就可以通过新注册的函数来进行Callback了

   .示例

  我们通过一个简单的例子来剖析ASP NET Callback的整个执行过程

  

  

   public class MyControl : WebControl ICallbackEventHandler             private const string Script = function onCallbackComplete(result) \\n +                    var element = document getElementById( %ID% ); \\n +                    if(element != null) \\n +                        element innerHTML = result; \\n ;         private const string Script = function onCallbackError() \\n +                    var element = document getElementById( %ID% ); \\n +                    if(element != null) \\n +                        element innerHTML = error ; \\n ;         public string GetCallbackResult()                     return Callback result ;                 public void RaiseCallbackEvent(string eventArgument)                         public override void RenderBeginTag(HtmlTextWriter writer)                     writer AddAttribute(HtmlTextWriterAttribute Onclick DoClientCallBack() );             base RenderBeginTag(writer);             writer Write( My Callback control );                 protected override void OnPreRender(EventArgs e)                     //Define callback references             string callbackRef = this Page ClientScript GetCallbackEventReference(                 this onCallbackComplete null onCallbackError true);             // Register script blocks will perform call to the server             this Page ClientScript RegisterClientScriptBlock(                 this GetType() DoClientCallBack                 function DoClientCallBack() + callbackRef + \\n true             );             // Register other scripts             this Page ClientScript RegisterClientScriptBlock(                 this GetType() onCallbackComplete                 Script Replace( %ID% this ClientID) true);             this Page ClientScript RegisterClientScriptBlock(                 this GetType() onCallbackError                 Script Replace( %ID% this ClientID) true);             base OnPreRender(e);        

  将上面的写好的控件放到一个Page上 在Runtime 当点击该控件的时候便会执行一次Callback 并且更新控件内容

.NET编程免费提供,内容来源于互联网,本文归原作者所有。

相关参考

知识大全 如何由ASP.NET 1.1移植到ASP.NET 2.0

如何由ASP.NET1.1移植到ASP.NET2.0  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 ASP.NET入门教程 7.2 ASP.NET 2.0的数据控件

ASP.NET入门教程7.2ASP.NET2.0的数据控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET数据类型转换浅析

ASP.NET数据类型转换浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET数据类

知识大全 浅析五大ASP.NET数据控件

浅析五大ASP.NET数据控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET中有不

知识大全 ASP.NET模板控件开发浅析

ASP.NET模板控件开发浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET模板控

知识大全 浅析ASP.NET编译器

浅析ASP.NET编译器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  要深入理解ASPNET动

知识大全 ASP.NET全局异常处理浅析

ASP.NET全局异常处理浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在我们写程序时偶尔

知识大全 ASP.NET入门教程 10.5.3 ASP.NET 2.0的新特性[2]

ASP.NET入门教程10.5.3ASP.NET2.0的新特性[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 ASP.NET入门教程 10.5.3 ASP.NET 2.0的新特性[1]

ASP.NET入门教程10.5.3ASP.NET2.0的新特性[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 ASP.NET缓存概念及其应用浅析

ASP.NET缓存概念及其应用浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET缓