Asp.net回调技术Callback学习
.aspx:
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
- <!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>无标题页</title>
- <script type="text/javascript">
- //向服务器传递参数
- function DoSearch(){
- var firstName=document.getElementById("TextBox1").value;
- CallServer(firstName,"");
- }
- //得到服务器的数据
- function ReceiveServerData(txtUserInfo){
- Results.innerHTML=txtUserInfo;
- }
- //设置每1秒执行一次
- setInterval("DoSearch()",1000);
- </script>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- 姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
- <br />
- <span id="Results" style=" width:500px;"></span>
- </div>
- </form>
- </body>
- </html>
.aspx.cs
- using System;
- using System.Collections;
- using System.Configuration;
- using System.Data;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.HtmlControls;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Data.SqlClient;
- public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
- {
- protected string txtUserInfo;
- protected void Page_Load(object sender, EventArgs e)
- {
- //获取一个对客户端函数的引用
- string cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
- //动态注册回调函数
- string callbackScript = "function CallServer(arg,context)" + "{" + cbReference + "};";
- //引发callbackScript
- Page.ClientScript.RegisterStartupScript(this.GetType(), "CallServer", callbackScript, true);
- }
- //引发Callback事件处理
- public void RaiseCallbackEvent(string txtFirstName)
- {
- if (txtFirstName != null)
- {
- String connString = System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver2008"].ToString();
- SqlConnection conn = new SqlConnection(connString);
- conn.Open();
- SqlCommand comm = new SqlCommand("select * from zzx where [name]=@name", conn);
- comm.Parameters.Add("@name", SqlDbType.VarChar).Value = txtFirstName;
- SqlDataReader reader = comm.ExecuteReader(CommandBehavior.CloseConnection);
- if (reader.Read())
- {
- txtUserInfo = "员工编号:" + reader["id"].ToString() + "<br>";
- txtUserInfo += "员工姓名:" + reader["name"].ToString() + "<br>";
- txtUserInfo += "地址:" + reader["address"].ToString() + "<br>";
- txtUserInfo += "服务器查询时间:" + DateTime.Now.ToString();
- }
- else
- {
- if (string.IsNullOrEmpty(txtFirstName))
- {
- txtUserInfo = "请输入姓名";
- }
- else
- {
- txtUserInfo = "查无此人";
- }
- }
- comm.Dispose();
- reader.Dispose();
- conn.Dispose();
- }
- }
- //得到回调的结果,返回给客户端
- public string GetCallbackResult()
- {
- return txtUserInfo;
- }
- }
简化版(偷懒一下):
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
- <!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>无标题页</title>
- <script type="text/javascript">
- function OnCallBack(txtUserInfo,context){
- Results.innerHTML=txtUserInfo;
- }
- </script>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- 姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
- <input id="Button2" type="button" value="button"
- onclick="<%=Page.ClientScript.GetCallbackEventReference(this, "document.getElementById('TextBox1').value", "OnCallBack",null)%>" />
- <br />
- <span id="Results" style="pink; width: 500;"></span>
- </div>
- </form>
- </body>
- </html>
.aspx.cs
- using System;
- using System.Collections;
- using System.Configuration;
- using System.Data;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.HtmlControls;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Data.SqlClient;
- using System.Text;
- public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
- {
- protected StringBuilder txtUserInfo;
- protected void Page_Load(object sender, EventArgs e)
- {
- }
- public string GetCallbackResult()
- {
- return txtUserInfo.ToString();
- }
- public void RaiseCallbackEvent(string txtFirstName)
- {
- txtUserInfo = new StringBuilder();
- String connString = ConfigurationManager.ConnectionStrings["sqlserver2008"].ToString();
- SqlConnection conn = new SqlConnection(connString);
- conn.Open();
- SqlCommand comm = new SqlCommand("select * from zzx where [name]=@name", conn);
- comm.Parameters.Add("@name", SqlDbType.VarChar).Value = txtFirstName;
- SqlDataReader reader = comm.ExecuteReader(CommandBehavior.CloseConnection);
- if (reader.Read())
- {
- txtUserInfo.Append("员工编号:" + reader["id"].ToString() + "<br>");
- txtUserInfo.Append("员工姓名:" + reader["name"].ToString() + "<br>");
- txtUserInfo.Append("地址:" + reader["address"].ToString() + "<br>");
- txtUserInfo.Append("查询时间:" + DateTime.Now.ToString());
- }
- else
- {
- if (txtFirstName == string.Empty)
- {
- txtUserInfo.Append("请输入姓名");
- }
- else
- {
- txtUserInfo.Append("查无此人");
- }
- reader.Dispose();
- comm.Dispose();
- conn.Dispose();
- }
- }
- }
示例3:
- <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
- <!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>无标题页</title>
- <script type="text/javascript">
- //客户端执行的方法
- //下面的方法是接收并处理服务器方法返回的结果
- function Success(args,context){
- message.innerHTML=args;
- }
- //下面的方式是当接收服务器方法处理的结果发生异常时调用的方法
- function Error(){
- message.innerHTML="发生了异常!";
- }
- </script>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- 用户名:<input type="text" id="txtUserName" onblur="CallServerMethod(txtUserName.value,null)" />
- <span id="message"></span>
- <br />
- 密码:<input type="password" size="10" maxlength="20" id="txtPwd" />
- </div>
- </form>
- </body>
- </html>
- public partial class Default3 : System.Web.UI.Page,ICallbackEventHandler //实现ICallbackEventHandler接口
- {
- String result = String.Empty;
- protected void Page_Load(object sender, EventArgs e)
- {
- //获取当前页的ClientScriptManager的引用
- ClientScriptManager csm = Page.ClientScript;
- /*获取回调的引用.会在客户端生成WebForm_DoCallback方法,
- * 调用它来达到异步调用.这个方法是微软写的方法,会被发送
- 到客户端*/
- /*注意这里的"Success"和Error两个字符串分别是客户端代码中
- *定义的两个javascript函数*/
- //下面的方法最后一个参数的意义:true表示执行异步回调,false标志执行同步回调
- String reference = csm.GetCallbackEventReference(this, "args", "Success", "", "Error", true);
- String callbackScript = "function CallServerMethod(args,context){\n"+
- reference+";\n }";
- //向当前页面注册javascript脚本代码
- csm.RegisterClientScriptBlock(this.GetType(), "CallServerMethod",callbackScript,true);
- }
- #region ICallbackEventHandler 成员
- /// <summary>
- /// 返回回调方法执行结果的方法
- /// </summary>
- public string GetCallbackResult()
- {
- return result;
- }
- /// <summary>
- /// 在服务器端运行回调方法
- /// </summary>
- public void RaiseCallbackEvent(string eventArgument)
- {
- if (eventArgument.ToLower().IndexOf("admin")!=-1)
- {
- result =eventArgument+ "不能作为用户注册.";
- }
- else
- {
- result = eventArgument + "可以注册.";
- }
- }
- #endregion
- }
Asp.net回调技术Callback学习的更多相关文章
- ASP.NET 回调技术(CallBack)
在asp.net中客户端与服务器端的交互默认都是整页面提交, 此时客户端将当前页面表单中的数据(包括一些自动生成的隐藏域)都提交到服务器端,服务器重新实例化一个当前页面类的实例响应这个请求,然后将整个 ...
- 【ASP.NET 基础】Page类和回调技术
Page 类有一个 IsPostBack 属性,这个属性用来指示当前页面是第一次加载还是响应了页面上某个控件的服务器事件导致回发而加载. 1.asp.net页面的声明周期 asp.net页面运行的时候 ...
- ASP.NET探讨:技术的学习顺序问题
作者: シtearシ 来源: 博客园 发布时间: 2011-09-27 08:40 阅读: 7675 次 推荐: 25 原文链接 [收藏] 摘要:很多人对于ASP.NET的入门和学 ...
- (转)探讨:ASP.NET技术的学习顺序问题
探讨:ASP.NET技术的学习顺序问题 摘要:很多人对于ASP.NET的入门和学习顺序比较迷茫,今天让我们一起来跟随作者的思路学习探讨ASP.NET的学习顺序问题,希望有所帮助. 如果你已经有较多的面 ...
- 【转】探讨:ASP.NET技术的学习顺序问题
摘要:很多人对于ASP.NET的入门和学习顺序比较迷茫,今天让我们一起来跟随作者的思路学习探讨ASP.NET的学习顺序问题,希望有所帮助. 如果你已经有较多的面向对象开发经验,跳过以下这两步: 第一步 ...
- 路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) ASP.NET WebApi技术从入门到实战演练 C#面向服务WebService从入门到精通 DataTable与List<T>相互转换
路由其实也可以很简单-------Asp.net WebAPI学习笔记(一) MVC也好,WebAPI也好,据我所知,有部分人是因为复杂的路由,而不想去学的.曾经见过一位程序猿,在他MVC程序中, ...
- JavaScript学习笔记(十二) 回调模式(Callback Pattern)
函数就是对象,所以他们可以作为一个参数传递给其它函数: 当你将introduceBugs()作为一个参数传递给writeCode(),然后在某个时间点,writeCode()有可能执行(调用)intr ...
- 理解javascript中的回调函数(callback)【转】
在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实 ...
- JAVA回调机制(CallBack)详解
序言 最近学习java,接触到了回调机制(CallBack).初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义.当然了,我在理解了回 ...
随机推荐
- xcode 模拟器,文档,离线安装
一:xcode上的模拟器,文档,在下载时,通过apple.com下载的速度太慢了,所以我们下载之后,做一下备份,离线安装还原就行了! 二:模拟器安装 目录:/Users/<user name&g ...
- jquery翻页
http://js.itivy.com/simplePagination.js/index.html#page-10 http://www.oschina.net/news/41941/7-html5 ...
- 算法笔记_036:预排序(Java)
目录 1 问题描述 2 解决方案 2.1 检验数组中元素的唯一性 2.2 模式计算 1 问题描述 在计算机科学中,预排序是一种很古老的思想.实际上,对于排序算法的兴趣很大程度上是因为这样一个事实: ...
- SVN 快速入门!
输入账户密码即可!
- js正则表达式test方法、exec方法与字符串search方法区别
1.正则表达式test方法 test() 方法用于检测一个字符串是否匹配某个模式 返回值: 如果字符串 string 中含有与 RegExpObject 匹配的文本,则返回 true,否则返回 fal ...
- Android中对Handle机制的理解
一.重要參考资料 [參考资料] 眼下来看,以下的几个网址中的内容质量比較不错.基本不须要再读别的网址了. 1.android消息机制一 http://xtfncel.javaeye. ...
- 一个事件激活多个JavaScript函数
http://www.cnblogs.com/meil/archive/2006/09/20/509359.html如果你的网页中一个“OnLoad”事件要激活两个以上的JavaScript函数,那怎 ...
- Linux-软件包管理-rpm命令管理-安装-卸载
mount 确认光盘是否挂载 mount /dev/cdrom /mnt/cdrom 将设备名称/dev/cdrom安装到/mnt/cdrom挂载点下面 mount 查看光盘是否已经挂载 (ro表示只 ...
- RMAN检查数据库physical/logical corruption
1.检测physical corruption RMAN> backup validate database archivelog all; 2.检测logical corruption RMA ...
- c语言中函数参数入栈的顺序是什么?为什么
看到面试题C语言中函数参数的入栈顺序如何? 自己不知道,边上网找资料.下面是详细解释 #include <stdio.h> void foo(int x, int y, int z){ ...