Solution pour la “Validation a échoué à une ou plusieurs entités. Voir " EntityValidationErrors la propriété pour plus de détails.”
J'ai rencontré cette erreur, il n'a fourni aucun détail quant à ce que la cause a été mais j'ai compris ce qu'est le problème. Je voulais la partager, pour que les autres personnes qui rencontrent il pourrait avoir du succès dans la résolution du problème.
J'ai eu la classe suivante:
public class BankUser : IdentityUser, IUserProfile
{
#region IUserProfile Members
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Required]
[Display(Name = "Email Address")]
[EmailAddress(ErrorMessage="Invalid Email Address")]
public string Email { get; set; }
[Display(Name = "Time Zone")]
public int TimeZone { get; set; }
public Dictionary<string, string> TimeZoneOptions
{
get
{
Dictionary<string, string> d = new Dictionary<string, string>();
d.Add("(GMT -10:00) Hawaii", "-10");
d.Add("(GMT -9:00) Alaska", "-9");
d.Add("(GMT -8:00) Pacific Time", "-8");
d.Add("(GMT -7:00) Mountain Time", "-7");
d.Add("(GMT -6:00) Central Time", "-6");
d.Add("(GMT -5:00) Eastern Time", "-5");
d.Add("Unknown", "0");
return d;
}
}
[Display(Name = "Phone")]
[Phone(ErrorMessage = "Invalid phone number.")]
[StringLength(10, MinimumLength = 10, ErrorMessage = "Phone number must be 10 characters long.")]
public string Phone { get; set; }
#endregion
}
Comme vous pouvez le voir, j'ai étendu IdentityUser avec des propriétés supplémentaires. De mon point de vue seulement avaient un nom d'utilisateur et le Mot de passe que des champs de formulaire lorsque vous essayez de créer un nouvel utilisateur UserManager.CreateAsync()
. Lorsque vous essayez d'envoyer le formulaire avec juste le nom d'utilisateur et le Mot de passe du système essayez de valider que le courrier Électronique était écoulé depuis qu'il avait l'attribut Requis.
//
//POST: /Account/Register
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new BankUser() { UserName = model.UserName };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInAsync(user, isPersistent: false);
return RedirectToAction("Index", "Home");
}
else
{
AddErrors(result);
}
}
//If we got this far, something failed, redisplay form
return View(model);
}
Merci! J'ai ajouté ci-dessous.
OriginalL'auteur FrankO | 2014-01-31
Vous devez vous connecter pour publier un commentaire.
Solution
Je dois ajouter de l'e-Mail comme un champ de mon formulaire ou supprimer l'attribut Obligatoire. Une fois que je ne soit de le code a fonctionné comme prévu.
Espère que ça aide.
OriginalL'auteur FrankO
Si vous utiliser Entity Framework:
Message d'erreur (à partir de la mise à Jour de la Base de données de commande dans le PMC):
La Validation a échoué pour une ou plusieurs entités. Voir " EntityValidationErrors la propriété pour plus de détails.
Solution:
Une cause de ce problème est la validation des erreurs lors de la Graine méthode fonctionne. Voir le Semis et le Débogage Cadre de l'Entité (EF) DBs pour des conseils sur le débogage de la Graine de méthode.
Pour plus d'informations, veuillez visiter: Avancé Entity Framework 6 Scénarios pour un MVC 5 Application Web (de 12 de 12)
Espère que cela aide...
OriginalL'auteur Murat Yıldız
Je pense que vous êtes en passant valeur null lors de la création de ApplicationUser instance.
Dans mon cas, j'ai mis le code Postal n'est pas nécessaire dans ViewModel, mais dans IdentityModel code Postal est encore nécessaire.
Donc, vous devez supprimer l'annotation de code Postal dans IdentityModel. Et ajouter de la Migration à la mise à Jour de la Base de données.
OriginalL'auteur Long Nguyen