问题描述
- 我想验证输入的用户名与数据库里名字重复与否
- _我想写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.Valuevar c = from r in db.Categoryselect r.Namewhere 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查询出问题了,不知道哪错了 指点一下呐呐
时间: 2024-09-23 23:33:14