2013-12-08 22 views
8

Sto utilizzando il nuovo sistema di appartenenza asp.net identity nel mio progetto. Voglio usare l'indirizzo e-mail come nome utente e sì, ho guardato a queste domande già:Problema con messaggio di convalida del nome utente nell'identità asp.net

Configure Microsoft.AspNet.Identity to allow email address as username

ASP.NET identity use email instead of user name

e so come utilizzare la posta elettronica come Username.But ho un altro problema, la messaggio di errore di convalida:

Name [email protected] is already taken.

questo messaggio arriva quando l'utente tenta di registrare con exis e-mail address.So ting, invece di questo messaggio di errore voglio dare qualche messaggio di errore del tipo:

User with the given email address already exist.

Così come posso fare questo in Asp.Net identità ??

risposta

11

Sostituisce appena il messaggio. Cerca il "Nome {0} già preso". e sostituirlo con il tuo messaggio "L'utente con l'indirizzo email specificato esiste già".

È possibile farlo nel metodo AddError. Questo è un esempio, è necessario creare codice di lavoro specifico dell'applicazione.

private void AddErrors(IdentityResult result) 
{ 
    foreach (var error in result.Errors) 
    { 
     if (error.EndsWith("is already taken.")) 
      ModelState.AddModelError("", "User with the given email address already exists"); 
     else ModelState.AddModelError("", error); 
    } 
} 
+3

Questo funziona ma non è elegante. Credo che il team di identità di ASP.NET stia lavorando sul codice reale: fonte qui: http://stackoverflow.com/a/19962202/687549 – PussInBoots

2

Un'altra opzione potrebbe essere quella di collegare il proprio UserValidator che fa solo il controllo di nome utente/e-mail, se non manca, delega al UserValidator di default, altrimenti restituisce un IdentityResult con l'errore messaggio che vuoi

Problemi correlati