ログイン用メールアドレスとその機能の利用可能性をチェックする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>";
}
}
可用性確認のリンクボタンをクリックするとうまくいきます。ユーザー情報をテーブルに保存する別のボタン「保存」があります。今、私の問題は、「このユーザー名はすでに別のユーザーによって使用されています」と表示された場合です。情報はまだデータベースに保存されています。これを防ぐ方法を教えてください!!!
なぜこれを2つの別々のアクションとして使用していますか? 「可用性の確認」チェックを行うと、ユーザー名*が利用可能になる可能性がありますが、「保存」するまでに他のユーザーが*取得した可能性があります。私は別の小切手を最初に走らせることの利点について考えることはできません。 –
Ifブロックの保存ボタンを無効にするだけです。 保存時間内にユーザーのログインメールを確認したい場合は、@Demien_The_Undelieverが述べたように、保存操作をチェックしてエラーを表示することができます。 –