我目前正在使用实体框架处理ASP.NET MVC4中的项目。 这是问题,我希望我的代码发回一个不同的Json对象 取决于Db.savechanges是否有效!
我一直在用控制台做一些调试,似乎我总是从我的IF的else部分得到错误,即使条件合适,它也永远不会进入实际状态。很难解释但很容易理解代码,所以在这里。
来自我的控制器的代码将真假json对象发送到我的javascript
[HttpPost]
public ActionResult Enregistrer_Inscription(InscriptionPost inscPost)
{
NoirEtOrEntities db = new NoirEtOrEntities();
Inscription insc = new Inscription()
{
inscriptionNom = inscPost.nomJ,
inscriptionPrenom = inscPost.prenomJ,
inscriptionDateNaissance = inscPost.DateNaissance,
inscriptionDate = DateTime.Now,
inscriptionCategory = inscPost.Category,
inscriptionDivision = inscPost.Division,
inscriptionStatut = inscPost.Statut,
inscriptionTaille = inscPost.Taille,
inscriptionSexe = inscPost.Sexe,
inscriptionEcole = inscPost.Ecole,
inscriptionAgeSept = inscPost.AgeSept,
inscriptionNiveauScolaire = inscPost.NiveauScolaire,
inscriptionAdresseJ = inscPost.AdresseJ,
inscriptionVilleJ = inscPost.VilleJ,
inscriptionCodePostalJ = inscPost.CodePostalJ,
inscriptionCourrielJ = inscPost.CourrielJ,
inscriptionTelephoneJ = inscPost.TelephoneJ,
inscriptionNomP = inscPost.nomP,
inscriptionPrenomP = inscPost.prenomP,
inscriptionAdresseP = inscPost.AdresseP,
inscriptionVilleP = inscPost.VilleP,
inscriptionCodePostalP = inscPost.CodePostalP,
inscriptionCourrielP = inscPost.CourrielP,
inscriptionTelephoneP = inscPost.TelephoneP,
inscriptionNomM = inscPost.nomM,
inscriptionPrenomM = inscPost.prenomM,
inscriptionAdresseM = inscPost.AdresseM,
inscriptionVilleM = inscPost.VilleM,
inscriptionCodePostalM = inscPost.CodePostalM,
inscriptionCourrielM = inscPost.CourrielM,
inscriptionTelephoneM = inscPost.TelephoneM,
inscriptionNotes = inscPost.Notes,
};
try
{
db.Inscription.Add(insc);
db.SaveChanges();
if (db.SaveChanges() > 0)
{
return Json(new { success = true });
}
else
{
return Json(new { success = false });
}
}
catch (System.Data.Entity.Validation.DbEntityValidationException ex)
{
return Json(new { success = false });
}
}
}
这是我的Jquery代码
success: function (data) {
console.log(data);
console.log(data.success);
if (data.success == true) {
console.log("succ");
console.log(data);
alertify.success("Formulaire recu avec succès", 5000);
Vider_Champs()
}
else {
console.log("nope");
console.log(data);
alertify.error("Le formulaire comporte des erreurs", 5000);
}
},
error: function () {
console.log("error");
alertify.error("Le formulaire comporte des erreurs", 5000);
}
});
}
所以问题在于代码:if (db.SaveChanges() > 0)
谢谢你的帮助
答案 0 :(得分:0)
问题是您要拨打db.SaveChanges()
两次:
db.SaveChanges(); // save changes to database
if (db.SaveChanges() > 0) // save changes once again
{
return Json(new { success = true });
}
首次调用方法时,保存更改,下次调用时无需保存。相反,将调用的结果保存在变量中并在下一行中使用它:
int result = db.SaveChanges();
if (result > 0)
{
return Json(new { success = true });
}