`
索菲亚.  ぅ
  • 浏览: 16390 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

ASP.NET2.0实现无刷新客户端回调

    博客分类:
  • NET
阅读更多

 概述

Asp.net网页的默认模型中,用户与页进行交互,单击按钮或执行导致回发的一些操作,此时将重新创建页及其控件,并在服务器端运行页代码,且新生成的页被呈现到浏览器。但是,很多情况下我们有这样的需求(比如说,客户端脚本维护一些状态信息,节省服务器往返的处理开销等),既是需要从客户端运行服务器代码,而不执行回发。Asp.net2.0的客户端回调机制正好能满足这种需求。在客户端回调中,客户端脚本会向Asp.net网页发送一个请求,该网页会调用一个"特别标记"的方法执行请求处理,然后向浏览器返回可由另一客户端脚本函数读取的值。

客户端回调组件
创建实现了客户端回调的Asp.net页应该包含如下几个方面,页的服务器端代码必须:
=>实现了ICallbackEventHandler接口。可以向任何Asp.net网页添加此接口声明。
=>提供RaiseCallbackEvent方法的实现。此方法将被调用以对服务器执行回调。
=>提供GetCallbackResult方法的实现。此方法会将回调结果返回个客户端。

此外,该网页还需包括执行以下操作的三个客户端脚本函数:
=>第一个是函数调用帮助器方法,该方法执行对服务器的实际请求。在此函数中,可以首先执行自定义的逻辑以准备事件参数,该参数将以字符串格式发送到服务器端回调事件处理程序。
=>第二个是客户端回调函数,该函数接收服务器端回调事件处理程序返回的结果。
=>第三个函数是执行对服务器端的实际请求的帮助函数。当在服务器代码中使用GetCallbackEventReference方法生成对此函数的引用时,由Asp.net自动生成该函数。

结合示例分析
建立一个Client_Callback3.aspx页面,UI部分:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="client_callback3.aspx.cs" Inherits="client_callback3" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Client Callback Sample</title> </head> <body> <form id="form1" runat="server"> <div> <input type="text" id="txtName" value="请输入一个人名" /> <input type="button" id="btnGetAge" value="Get his(her) Age" onclick="getAgeByName(); " /> <hr /> <span id="result"></span> </div> <script type="text/javascript"> function getAgeByName() { var context = ""; var name = document.getElementById('txtName').value; <%= Page.ClientScript.GetCallbackEventReference(this, "name", "ReceiveDataFromServer", "context") %>; } function ReceiveDataFromServer(retVal) { document.getElementById('result').innerText = retVal; } </script> </form> </body> </html>


 code-behind部分:

using System; public partial class client_callback3 : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler { private System.Collections.Generic.Dictionary<string, int> _Person = new System.Collections.Generic.Dictionary<string, int>(); public System.Collections.Generic.Dictionary<string, int> Person { get { if (!Equals(ViewState["Person"], null)) { return ViewState["Person"] as System.Collections.Generic.Dictionary<string, int>; } else return null; } set { ViewState["Person"] = value; } } string callbackVal = string.Empty; protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { _Person.Add("Allan", 24); _Person.Add("Kaori", 23); _Person.Add("Vincent", 22); _Person.Add("George", 21); Person = _Person; } } void System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent(string eventArgument) { this.callbackVal = eventArgument; } string System.Web.UI.ICallbackEventHandler.GetCallbackResult() { return this.callbackVal + "'age is " + Person[this.callbackVal].ToString(); } }


 在UI中的getAgeByName即对应如上讲的第一个脚本函数,ReceiveDataFromServer对应第二个函数即是客户端回调函数,code-behind页面类继承了接口ICallbackEventHandler,并实现了其RaiseCallbackEvent和GetCallbackResult方法。RaiseCallbackEvent方法有一个string类型的参数,该参数是从客户端传入。而GetCallbackResult方法则是返回一个string类型的值,该值被客户端回调函数接收。大家可能注意到了还有一个客户端函数哪里去了?它是在服务器端调用GetCallbackEventReference方法生成对此函数的引用时,有Asp.Net2.0自动生成。我们可以通过html的查看源文件知道这个函数WebForm_DoCallback('__Page',name,ReceiveDataFromServer,context,null,false);)。

几个问题
1,GetCallbackEventReference方法:获取一个对客户端函数的引用,调用该函数时,将启动一个对服务器端事件的客户端回调。按照我的理解,此方法是实现让客户端有能力传递参数到服务器端。这个方法包含四个参数,GetCallbackEventReference(this, "name", "ReceiveDataFromServer", "context"),其参数意思分别是:第一个参数既是继承了ICallbackEventHandler接口的控件;第二个参数是从客户端传递到服务器端的参数值;第三个参数是客户端回调函数;第四个是上下文。

分享到:
评论

相关推荐

    ASP.NET2.0实现无刷新客户端回调的Callback机制

    在"WebSiteTest"这个项目中,你可以找到一个实际的ASP.NET 2.0客户端回调实现示例。通过研究和调试这个项目,可以更好地理解和掌握无刷新客户端回调的工作原理及其在实际开发中的应用。同时,也可以学习如何结合其他...

    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 ...

    ASP.NET 2.0客户端回调实例代码

    ASP.NET 2.0客户端回调技术是Web应用程序中一种提高用户体验的方法,它允许页面部分更新而无需进行完整的页面刷新。这种技术在不打断用户交互的情况下提供了更快的响应速度,极大地提升了网页应用的性能和效率。在...

    ASP.NET 2.0客户端回调的实现分析

    在ASP.NET 2.0中,客户端回调主要通过以下几种方式实现: 1. **UpdatePanel**:这是最常用的实现方式,UpdatePanel是一个服务器控件,可以在客户端呈现为一个IFrame。当UpdatePanel内的控件发生改变时,仅会发送该...

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

    在ASP.NET 2.0中,无刷新页面开发主要依赖于ICallbackEventHandler接口和客户端脚本的支持。以下是对这个知识点的详细解释: **ICallbackEventHandler接口** ICallbackEventHandler是ASP.NET 2.0提供的一种机制,...

    无刷新asp.net2.0

    在"无刷新asp.net2.0"这个主题中,我们可以看到它强调的是如何在ASP.NET 2.0环境下利用Ajax技术实现页面的无刷新更新。"Callback"可能指的是回调函数,这是在异步请求中常见的一种处理机制,当服务器响应完成时,回...

    Asp.Net2.0下客户端脚本调用服务端函数的研究.pdf

    总的来说,Asp.Net 2.0 结合Ajax技术,以及Visual Studio 2005提供的工具,使得开发者能够创建高性能、交互性强的Web应用程序,而客户端脚本调用服务端函数的能力则是实现这一目标的关键组成部分。

    ASP.NET 2.0 AJAX 组件安装软件集合

    在实际开发中,使用ASP.NET 2.0 AJAX组件时,开发者还需要了解如何处理异步回调、状态管理、错误处理以及与现有ASP.NET控件的集成。同时,为了调试目的,开发者通常会使用debug版本的脚本库,这可以帮助他们定位...

    征服 asp.net 2.0 ajax 下

    2. **异步回调和Partial Page Rendering**:ASP.NET AJAX的异步回调机制允许只更新页面的一部分,而不是整个页面,这大大减少了网络传输的数据量。Partial Page Rendering是实现这一功能的关键,它使得只有发生改变...

    ASP.NET2.0+AjaxPro留言本

    在这个"ASP.NET2.0+AjaxPro留言本"项目中,我们可以学到以下关键知识点: 1. **ASP.NET 2.0基础知识**:了解ASP.NET 2.0的核心组件,如页生命周期、控件事件模型、母版页(Master Pages)、配置管理、 Membership ...

    征服 asp.net 2.0 ajax 中

    在ASP.NET 2.0中引入的AJAX支持,允许开发者利用JavaScript实现局部页面更新,无需刷新整个页面即可与服务器进行通信,提升了用户体验。 **ASP.NET AJAX的主要组件和功能:** 1. **Microsoft AJAX Library**: 这是...

    PHP TO ASP.NET 2.0开发系列课程(3):PHP深入编程之AJAX应用

    JavaScript再将这些数据动态地插入到网页中,实现无刷新的用户体验。 在课程中,你将学习如何使用JavaScript库如jQuery来创建和发送AJAX请求。例如,使用$.ajax()函数可以轻松地发起GET或POST请求,并设置回调函数...

    ASP.NET2.0 WEB实时进度条

    1. **UpdatePanel**:ASP.NET AJAX 控件套件中的UpdatePanel是一个无刷新的区域,它可以模拟页面的部分刷新,允许开发者在不重新加载整个页面的情况下更新部分UI。在进度条场景中,UpdatePanel可以在服务器端执行...

    asp.net 2.0版聊天室

    - **AJAX(Asynchronous JavaScript and XML)**:ASP.NET 2.0支持AJAX,通过局部刷新技术,实现无刷新的聊天体验。 - **Web Services或WCF**:可能使用这些服务来实现客户端与服务器之间的通信,传输聊天消息。 ...

    征服ASP.NET 2.0 Ajax之CascadingDropDown关联菜单的使用实例

    Ajax(Asynchronous JavaScript and XML)技术则为ASP.NET 2.0提供了无刷新用户体验,增强了用户交互性。在ASP.NET 2.0中,微软引入了一个名为"CascadingDropDown"的控件,它允许在网页上实现级联下拉菜单的效果,...

    asp.net2.0 AjaxControl组件(开源)

    ASP.NET 2.0 AJAX Control Toolkit 是一个非常实用的开源工具集,专为开发者提供了一系列易于使用的、基于AJAX的控件和扩展,以增强ASP.NET应用程序的用户体验。这个工具包使得开发人员能够轻松地在网页中实现异步...

    征服ASP.NET 2.0 Ajax——Web开发技术详解(光盘使用说明)

    - **CallbackRefresh**:利用ASP.NET 2.0的回调特性实现局部刷新。 - **IframeRefresh**:通过嵌入iframe的方式实现局部刷新。 - **JsRefresh**:纯JavaScript方式实现局部刷新。 **第4章:CSS制作方法** - **...

    Asp.net2.0大文件上传组件(带进度条)

    在Asp.net2.0中,可以使用UpdateProgress控件配合UpdatePanel来实现页面局部刷新,显示上传进度。同时,服务器端需要定期更新进度信息,并通过回调函数传递给客户端。 接下来,我们看到文件列表中包含`...

Global site tag (gtag.js) - Google Analytics