我想验证输入的用户名与数据库里名字重复与否

_我想写asp.net 的注册界面,其中要求和数据库里面名称对比用户名重复与否,我使用自定义控件CustomValidator,但是死活没用, txt,erromessage, controlvalidate都设置了你看下面是.cs里的代码:
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
MyPetShopDataContext db = new MyPetShopDataContext();
var c = from r in db.Category
select r.Name;
foreach (var m in c)
{
if (args.Value.Equals(m.ToString()))
args.IsValid = false;
else args.IsValid = true;
}

  • 两个问题
  • 1.linq可以自己带条件的,何必把所有数据查出来一条一条去核对?解决方法如下:

    var name0 = args.Value
    var c = from r in db.Category
    select r.Name
    where r.Name == name0;
    
  • 2.args.IsValid = true;是在循环里面的。也就是说你循环里判断了一次就认为可以得出对错的结论了么?你既然查了所有数据出来,当然要所有数据都看过才能知道是对的。解决方法如下

    args.IsValid=True;
    foreach (var m in c)
    {
    if (args.Value.Equals(m.ToString()))
    {
    args.IsValid = false;
    break;
    }
    } 
    
  • 但是无论如何以第一种解决方式为好

sql="select * From TableName name='" & name & "'"

Set rs = conn.Execute(sql)
Dim HasName
HasName = rs.EOF

rs.Close
If HasName Then
sql = "Insert into ......."
Else
Response.Write "用户已经存在"
End If

不,要求用linq 使用控件customValidation ,我的代码应该是Linq查询出问题了,不知道哪错了 指点一下呐呐