我创建了一个aspx格式的链接按钮,用于检查登录电子邮件地址的可用性,其功能如下。
protected void lnkCheckAvailable_Click(object sender, EventArgs e)
{
SystemUserBL bl = new SystemUserBL(SessionContext.SystemUser);
ds = new DataSet();
bl.FetchForLoginEmailAddress(ds, txtLoginEmailAddress.Text);
if (ds.Tables[0].Rows.Count > 0)
{
valDuplicatePassword.Visible = true;
valDuplicatePassword.Text = "<b>This User Name is already in use by another user.</b>";
}
else
{
valDuplicatePassword.Visible = true;
valDuplicatePassword.Text = "<b>Congratulations! " + txtLoginEmailAddress.Text + " is available.</b>";
}
}
当用户点击检查可用性链接按钮时,它工作正常。还有另一个按钮“保存”,用于将用户信息保存在表格中。现在我的问题是,如果它显示“此用户名已被其他用户使用”。消息信息仍保存在数据库中。请告诉我如何防止这种情况!!!
答案 0 :(得分:1)
您可以根据数据库中是否存在用户名返回true
或false
。您可以创建一个检查用户可用性的方法。
当用户按下保存按钮时,如果方法返回true
,则表示用户存在,您将调用该方法。
private bool CheckUserAvailability()
{
SystemUserBL bl = new SystemUserBL(SessionContext.SystemUser);
ds = new DataSet();
bl.FetchForLoginEmailAddress(ds, txtLoginEmailAddress.Text);
if (ds.Tables[0].Rows.Count > 0)
{
valDuplicatePassword.Visible = true;
valDuplicatePassword.Text = "<b>This User Name is already in use by another user.</b>";
return true;
}
else
{
valDuplicatePassword.Visible = true;
valDuplicatePassword.Text = "<b>Congratulations! " + txtLoginEmailAddress.Text + " is available.</b>";
return false;
}
}
您也可以在link
点击上调用此方法。
protected void lnkCheckAvailable_Click(object sender, EventArgs e)
{
CheckUserAvailability();
}
如果用户不存在,则在Save
按钮上调用此方法,而不是在数据库中保存信息。
protected void Savebtn_Click(object sender, EventArgs e)
{
if(CheckUserAvailability() == false)
{
SaveUserInfoToDataBase();
}
}