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做了一个定义.当然了,我在理解了回 ...
随机推荐
- mysql表utf-8 字符串入库编码异常
分析:http://www.myexception.cn/mysql/639943.html 解决方法:http://blog.sina.com.cn/s/blog_3f78232201011o26. ...
- 算法笔记_012:埃拉托色尼筛选法(Java)
1 问题描述 Compute the Greatest Common Divisor of Two Integers using Sieve of Eratosthenes. 翻译:使用埃拉托色尼筛选 ...
- TP框架中field查询字段
TP框架中field查询字段 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是files !!!! 不是fields 也不是file ...
- 【Oracle】查看正在运行的存储过程
select name from v$db_object_cache where locks > 0 and pins > 0 and type='PROCEDURE';
- 05-maven学习-构建web项目
1,新增maven项目 然后输入相应包名,项目名,创建如下项目 发现以上有报错,需要进行如下操作: 下面文章转载自:http://blog.csdn.net/zhshulin/article/deta ...
- ServletConfig讲解
1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数. 例如: <ser ...
- FFmpeg 如何探测网络流格式/如何从内存中获取数据
文章转自:http://blog.csdn.net/rootusers/article/details/42551935 一般ffmpeg都是直接从文件中读取或者从网络流中读取,比如rtp://xx. ...
- Python装饰器(Decorator)简介
Python有许多出色的语言特性,装饰器(Decorator)便是其中一朵奇葩.先来看看一段代码: def deco1(f): print 'decorate 1' return f def deco ...
- Sql server注入简单认识
登录界面常常会涉及到敏感关键字的注入 为了对应面试,再看一下 怎样防止注入, 可以过滤SQL需要参数中的敏感字符(忽略大小写) public static string Split(string in ...
- struts2 的国际化
一.使用步骤 1)写资源文件,资源文件名命名规范和之前的讲的一致,有疑问请参考java开发中国际化 2)配置,在 struts.xml 中使用常量进行加载 struts.custom.i18n.res ...