主题:ASP.NET自定义控件检查用户名是否存在的问题
我想用一个自定义控件在注册ID的时候检查是否有同名用户。
奇怪的是总是能插入(我在建立数据库表的时候也是设置了主键的),用断点调试了一下,发现count的值没问题,和数据库里的相关记录数一致,这个控件也能报错,但是并没有阻止数据的提交。
我想这个验证是不是顺序不对,以为是提交数据后才跟服务器交互,然后这个控件开始判断,返回错误时数据已经插入数据库了。我试了下把这个TextBox设置为 AutoPostBack,但是还是没有效果。请问应该怎么做,谢谢
这个是控件的后台代码:
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
SqlConnection con = DB_UserInfo.CreateConnection();
con.Open();//打开数据库
string pID=args.Value;//获取文本框中的用户名
SqlCommand cmd = new SqlCommand("select Count(*) from UserInfo where pID='" + pID + "'", con);
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count > 0)
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
con.Close();
}
奇怪的是总是能插入(我在建立数据库表的时候也是设置了主键的),用断点调试了一下,发现count的值没问题,和数据库里的相关记录数一致,这个控件也能报错,但是并没有阻止数据的提交。
我想这个验证是不是顺序不对,以为是提交数据后才跟服务器交互,然后这个控件开始判断,返回错误时数据已经插入数据库了。我试了下把这个TextBox设置为 AutoPostBack,但是还是没有效果。请问应该怎么做,谢谢
这个是控件的后台代码:
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
SqlConnection con = DB_UserInfo.CreateConnection();
con.Open();//打开数据库
string pID=args.Value;//获取文本框中的用户名
SqlCommand cmd = new SqlCommand("select Count(*) from UserInfo where pID='" + pID + "'", con);
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count > 0)
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
con.Close();
}