首页 > 代码库 > 【转】 ASP.NET使用ICallbackEventHandler无刷新验证用户名是否可用
【转】 ASP.NET使用ICallbackEventHandler无刷新验证用户名是否可用
功能说明:当用户在用户名输入框输入字符并焦点离开此输入框时,自动到数据库用户表中验证此用户名是否已被注册,如果已被注册,显示【不可用】,反之,显示【可用】,期间页面不刷新,读者也可以考虑将提示文字换成图片等更佳体验的提示方式。
(只是的个Demo,没有考虑诸如Sql注入等问题,期间参考了网上的个别关于ICallbackEventHandler使用的案例。这个Demo是今天在首页看了某个大虾关于用ICallbackEventHandler无刷新获取服务器时间后做的,文章地址忘了,呵呵~,等找到后补上)。
前台代码:
1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Ver.aspx.cs" Inherits="Ver" %> 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 7 <script language="javascript"> 8 function VerName() { 9 //传给后台的参数,在方法RaiseCallbackEvent()中实现 10 var message = document.getElementById("txtName").value; 11 var context = ""; 12 <%=sCallBackFunctionInvocation%>; 13 } 14 function ShowMessage(Mes, context) { 15 //Mes 是后台GetCallbackResult()的返回值 16 var spMes = document.getElementById("spMes"); 17 if(Mes == "true") { 18 spMes.innerHTML = "可用"; 19 } 20 else{ 21 spMes.innerHTML = "不可用"; 22 } 23 24 } 25 </script> 26 </head> 27 <body> 28 <form id="form1" runat="server"> 29 <div> 30 用户名:<asp:TextBox ID="txtName" runat="server" onblur="VerName()"></asp:TextBox> 31 <span id="spMes"></span> 32 <br /> 33 密 码:<asp:TextBox ID="txtPwd" runat="server"></asp:TextBox> 34 </div> 35 </form> 36 </html>
后台代码:
using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; 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.Xml.Linq; using System.Data.SqlClient; using System.Data.Common; public partial class Ver : System.Web.UI.Page,ICallbackEventHandler { public string sCallBackFunctionInvocation; //接收前台传入的值 string userName = ""; void Page_Load(object sender, System.EventArgs e) { //注册脚本到前台 sCallBackFunctionInvocation = Page.ClientScript.GetCallbackEventReference(this, "message", "ShowMessage", "context"); } #region ICallbackEventHandler 成员 public string GetCallbackResult() { using (SqlConnection conn = new SqlConnection( System.Configuration.ConfigurationManager.AppSettings["ConnStr"])) { SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = string.Format( "Select Count(*) From PUsers Where UserName=‘{0}‘", userName); conn.Open(); if (int.Parse(cmd.ExecuteScalar().ToString()) == 1) { return "false"; } else { return "true"; } } } //接收前台参数 public void RaiseCallbackEvent(string eventArgument) { userName = eventArgument; } #endregion }
【转】 ASP.NET使用ICallbackEventHandler无刷新验证用户名是否可用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。