_我想寫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;
}
}
但是無論如何以第一種解決方式為好