Ich bin neu bei MVC und ich entwickle eine Self-Service-Anwendung für unsere Kunden bei der Arbeit, die sie mit ihrem clientcode und Passwort anmelden, ich verwendet asp.net Identität mit DBContext und es geschafft, ein benutzerdefiniertes Profilfeld zu erstellen, das ClientCode ist und funktioniert gut, aber ich muss dieses Feld so einzigartig machen, dass nur ein ClientCode in der Benutzerdatenbank existiert, dachte ich vielleicht, dies bei der Registrierung eines neuen Kontos zu überprüfen, nicht sicher, wie Ich kann diese Einschränkung implementieren;Einzigartiges benutzerdefiniertes Profilfeld asp.net identity MVC5
Mein Account Register-Methode
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email, ClientCode = model.ClientCode };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
// For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
// Send an email with this link
// string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
// var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
// await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");
return RedirectToAction("ClientsHome", "Home");
}
AddErrors(result);
}
// If we got this far, something failed, redisplay form
return View(model);
}
Mein AccountViewModel RegisterViewModel
public class RegisterViewModel
{
[Required]
[Display (Name = "Client Code")]
public long ClientCode { get; set; }
[Required]
[EmailAddress]
[Display(Name = "Email")]
public string Email { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
Thanx das ist genau das, was ich suche, aber ich änderte die Art, wie ich meine Client-Codes zur Liste hinzufügen durch Ersetzen der zwei Zeilen ClientCodeList.Add (100), ClientCodeList.Add (200) mit clientCodesList = context.Users.Select (u => u.ClientCode) .ToList(); Aber es erstellt immer noch einen doppelten Client-Code – Trev
Ok, ich habe es endlich geschafft, es funktionieren zu lassen, indem ich zu if (clientCodeExists == false) ändere – Trev