当前位置:Gxlcms > asp.net > Asp.net回调技术Callback学习笔记

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

时间:2021-07-01 10:21:17 帮助过:15人阅读

.aspx:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <title>无标题页</title>
  6. <script type="text/javascript">
  7. //向服务器传递参数
  8. function DoSearch(){
  9. var firstName=document.getElementById("TextBox1").value;
  10. CallServer(firstName,"");
  11. }
  12. //得到服务器的数据
  13. function ReceiveServerData(txtUserInfo){
  14. Results.innerHTML=txtUserInfo;
  15. }
  16. //设置每1秒执行一次
  17. setInterval("DoSearch()",1000);
  18. </script>
  19. </head>
  20. <body>
  21. <form id="form1" runat="server">
  22. <div>
  23. 姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  24. <br />
  25. <span id="Results" style=" width:500px;"></span>
  26. </div>
  27. </form>
  28. </body>
  29. </html>
  30. [/code]
  31. .aspx.cs
  32. [code]
  33. using System;
  34. using System.Collections;
  35. using System.Configuration;
  36. using System.Data;
  37. using System.Web;
  38. using System.Web.Security;
  39. using System.Web.UI;
  40. using System.Web.UI.HtmlControls;
  41. using System.Web.UI.WebControls;
  42. using System.Web.UI.WebControls.WebParts;
  43. using System.Data.SqlClient;
  44. public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
  45. {
  46. protected string txtUserInfo;
  47. protected void Page_Load(object sender, EventArgs e)
  48. {
  49. //获取一个对客户端函数的引用
  50. string cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
  51. //动态注册回调函数
  52. string callbackScript = "function CallServer(arg,context)" + "{" + cbReference + "};";
  53. //引发callbackScript
  54. Page.ClientScript.RegisterStartupScript(this.GetType(), "CallServer", callbackScript, true);
  55. }
  56. //引发Callback事件处理
  57. public void RaiseCallbackEvent(string txtFirstName)
  58. {
  59. if (txtFirstName != null)
  60. {
  61. String connString = System.Configuration.ConfigurationManager.ConnectionStrings["sqlserver2008"].ToString();
  62. SqlConnection conn = new SqlConnection(connString);
  63. conn.Open();
  64. SqlCommand comm = new SqlCommand("select * from zzx where [name]=@name", conn);
  65. comm.Parameters.Add("@name", SqlDbType.VarChar).Value = txtFirstName;
  66. SqlDataReader reader = comm.ExecuteReader(CommandBehavior.CloseConnection);
  67. if (reader.Read())
  68. {
  69. txtUserInfo = "员工编号:" + reader["id"].ToString() + "<br>";
  70. txtUserInfo += "员工姓名:" + reader["name"].ToString() + "<br>";
  71. txtUserInfo += "地址:" + reader["address"].ToString() + "<br>";
  72. txtUserInfo += "服务器查询时间:" + DateTime.Now.ToString();
  73. }
  74. else
  75. {
  76. if (string.IsNullOrEmpty(txtFirstName))
  77. {
  78. txtUserInfo = "请输入姓名";
  79. }
  80. else
  81. {
  82. txtUserInfo = "查无此人";
  83. }
  84. }
  85. comm.Dispose();
  86. reader.Dispose();
  87. conn.Dispose();
  88. }
  89. }
  90. //得到回调的结果,返回给客户端
  91. public string GetCallbackResult()
  92. {
  93. return txtUserInfo;
  94. }
  95. }

简化版(偷懒一下):

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <title>无标题页</title>
  6. <script type="text/javascript">
  7. function OnCallBack(txtUserInfo,context){
  8. Results.innerHTML=txtUserInfo;
  9. }
  10. </script>
  11. </head>
  12. <body>
  13. <form id="form1" runat="server">
  14. <div>
  15. 姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
  16. <input id="Button2" type="button" value="button"
  17. onclick="<%=Page.ClientScript.GetCallbackEventReference(this, "document.getElementById('TextBox1').value", "OnCallBack",null)%>" />
  18. <br />
  19. <span id="Results" style="pink; width: 500;"></span>
  20. </div>
  21. </form>
  22. </body>
  23. </html>
  24. .aspx.cs
  25. using System;
  26. using System.Collections;
  27. using System.Configuration;
  28. using System.Data;
  29. using System.Web;
  30. using System.Web.Security;
  31. using System.Web.UI;
  32. using System.Web.UI.HtmlControls;
  33. using System.Web.UI.WebControls;
  34. using System.Web.UI.WebControls.WebParts;
  35. using System.Data.SqlClient;
  36. using System.Text;
  37. public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
  38. {
  39. protected StringBuilder txtUserInfo;
  40. protected void Page_Load(object sender, EventArgs e)
  41. {
  42. }
  43. public string GetCallbackResult()
  44. {
  45. return txtUserInfo.ToString();
  46. }
  47. public void RaiseCallbackEvent(string txtFirstName)
  48. {
  49. txtUserInfo = new StringBuilder();
  50. String connString = ConfigurationManager.ConnectionStrings["sqlserver2008"].ToString();
  51. SqlConnection conn = new SqlConnection(connString);
  52. conn.Open();
  53. SqlCommand comm = new SqlCommand("select * from zzx where [name]=@name", conn);
  54. comm.Parameters.Add("@name", SqlDbType.VarChar).Value = txtFirstName;
  55. SqlDataReader reader = comm.ExecuteReader(CommandBehavior.CloseConnection);
  56. if (reader.Read())
  57. {
  58. txtUserInfo.Append("员工编号:" + reader["id"].ToString() + "<br>");
  59. txtUserInfo.Append("员工姓名:" + reader["name"].ToString() + "<br>");
  60. txtUserInfo.Append("地址:" + reader["address"].ToString() + "<br>");
  61. txtUserInfo.Append("查询时间:" + DateTime.Now.ToString());
  62. }
  63. else
  64. {
  65. if (txtFirstName == string.Empty)
  66. {
  67. txtUserInfo.Append("请输入姓名");
  68. }
  69. else
  70. {
  71. txtUserInfo.Append("查无此人");
  72. }
  73. reader.Dispose();
  74. comm.Dispose();
  75. conn.Dispose();
  76. }
  77. }
  78. }

示例3:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <title>无标题页</title>
  6. <script type="text/javascript">
  7. //客户端执行的方法
  8. //下面的方法是接收并处理服务器方法返回的结果
  9. function Success(args,context){
  10. message.innerHTML=args;
  11. }
  12. //下面的方式是当接收服务器方法处理的结果发生异常时调用的方法
  13. function Error(){
  14. message.innerHTML="发生了异常!";
  15. }
  16. </script>
  17. </head>
  18. <body>
  19. <form id="form1" runat="server">
  20. <div>
  21. 用户名:<input type="text" id="txtUserName" onblur="CallServerMethod(txtUserName.value,null)" />
  22. <span id="message"></span>
  23. <br />
  24. 密码:<input type="password" size="10" maxlength="20" id="txtPwd" />
  25. </div>
  26. </form>
  27. </body>
  28. </html>
  29. [code]
  30. public partial class Default3 : System.Web.UI.Page,ICallbackEventHandler //实现ICallbackEventHandler接口
  31. {
  32. String result = String.Empty;
  33. protected void Page_Load(object sender, EventArgs e)
  34. {
  35. //获取当前页的ClientScriptManager的引用
  36. ClientScriptManager csm = Page.ClientScript;
  37. /*获取回调的引用.会在客户端生成WebForm_DoCallback方法,
  38. * 调用它来达到异步调用.这个方法是微软写的方法,会被发送
  39. 到客户端*/
  40. /*注意这里的"Success"和Error两个字符串分别是客户端代码中
  41. *定义的两个javascript函数*/
  42. //下面的方法最后一个参数的意义:true表示执行异步回调,false标志执行同步回调
  43. String reference = csm.GetCallbackEventReference(this, "args", "Success", "", "Error", true);
  44. String callbackScript = "function CallServerMethod(args,context){\n"+
  45. reference+";\n }";
  46. //向当前页面注册javascript脚本代码
  47. csm.RegisterClientScriptBlock(this.GetType(), "CallServerMethod",callbackScript,true);
  48. }
  49. #region ICallbackEventHandler 成员
  50. /// <summary>
  51. /// 返回回调方法执行结果的方法
  52. /// </summary>
  53. public string GetCallbackResult()
  54. {
  55. return result;
  56. }
  57. /// <summary>
  58. /// 在服务器端运行回调方法
  59. /// </summary>
  60. public void RaiseCallbackEvent(string eventArgument)
  61. {
  62. if (eventArgument.ToLower().IndexOf("admin")!=-1)
  63. {
  64. result =eventArgument+ "不能作为用户注册.";
  65. }
  66. else
  67. {
  68. result = eventArgument + "可以注册.";
  69. }
  70. }
  71. #endregion
  72. }

人气教程排行