2016-09-09 4 views
0

Ich habe eine Link-Schaltfläche in aspx Formular erstellt, die Verfügbarkeit der Login-E-Mail-Adresse und ihre Funktionalität zu überprüfen ist als.Implementieren Sie die Verfügbarkeit prüfen Funktionalität auf Speichern Schaltfläche

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>"; 
     } 
    } 

Es funktioniert gut, wenn Benutzer klicken Sie auf Verfügbarkeit prüfen Link-Taste klicken. Es gibt eine weitere Schaltfläche "Speichern", die die Benutzerinformationen in der Tabelle speichert. Jetzt ist mein Problem, wenn es angezeigt wird "Dieser Benutzername wird bereits von einem anderen Benutzer verwendet." Nachricht die Information ist noch in der Datenbank gespeichert. Bitte sag mir, wie ich das verhindern kann !!!

+0

Warum haben Sie das als zwei separate Aktionen? Ein Benutzername * kann * verfügbar sein, wenn Sie die Prüfung "Verfügbarkeit prüfen" durchführen, aber möglicherweise von einem anderen * zum Zeitpunkt des Speicherns durchgeführt wurde. Ich kann mir keinen Vorteil vorstellen, wenn ich zuerst einen separaten Scheck durchführe. –

+0

Deaktivieren Sie einfach Ihre Speichern-Schaltfläche in Ihrem If-Block. Wenn Sie die Benutzeranmelde-E-Mail in der Speicherzeit überprüfen möchten, wie As @Demien_The_Undeliever sagte, können Sie die Speicheraktion überprüfen und einen Fehler melden. –

Antwort

1

Sie können true oder false basierend auf dem Benutzernamen in der Datenbank vorhanden oder nicht zurückgeben. Sie können eine Methode erstellen, die die Benutzerverfügbarkeit überprüft.

Wenn Benutzer die Schaltfläche Speichern drücken, rufen Sie diese Methode auf, wenn die Methode true zurückgibt, bedeutet dies, dass der Benutzer existiert.

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; 
      } 
} 

Sie können diese Methode auch unter link klicken.

protected void lnkCheckAvailable_Click(object sender, EventArgs e) 
{ 
    CheckUserAvailability(); 
} 

Sie rufen diese Methode auf Save Schaltfläche, wenn Benutzer existieren nicht als Informationen in der Datenbank zu speichern.

protected void Savebtn_Click(object sender, EventArgs e) 
{ 
    if(CheckUserAvailability() == false) 
    { 
    SaveUserInfoToDataBase(); 
    } 
} 
+0

Alle diese Vorüberprüfungen sind, wie gesagt, sinnlos, wenn die Möglichkeit besteht, dass zwei Benutzer gleichzeitig versuchen, diesen Code auszuführen. Z.B. Beide Benutzer prüfen die Verfügbarkeit - ja, es ist verfügbar. Beide Benutzer drücken "Speichern". Der Code wird für beide Benutzer ausgeführt und bestimmt, dass der Benutzername verfügbar ist, und * dann * drückt vorwärts und fügt beide Benutzer ein. Sie * müssen * eine Überprüfung an dem tatsächlichen Punkt von 'EINFÜGEN' in die Datenbank haben (und auch, vorzugsweise, eine eindeutige Beschränkung, um Duplikate zu verhindern), und die meisten Vorüberprüfungen werden dann sinnlos gemacht. –

+0

@Damien_The_Unbeliever ja genau ich stimme dir zu, aber diese Antwort ist in OP Zusammenhang. Sie haben bereits in Kommentaren gezeigt, dass Sie die Antwort auch bearbeiten können, wenn Sie möchten. – Mairaj

Verwandte Themen