khorzu.khan
سه شنبه 09 تیر 1394, 10:37 صبح
سلام دوستان .
برنامه ای نوشتم که دارای ویرایش کاربر است .
من وقتی توو بخش ویرایش کاربر اطلاعات رو تغییر میدم و روی دکمه save کلیک میکنم با ارور زیر مواجه می شم .
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
جالب اینجاس که وقتی annotations های مربوط به ConfirmPassword رو در کلاسم حذف میکنم برنامه دیگه ارور نمیده .
کلاسم رو بصورت زیر تعریف کردم :
public partial class UsersTable
{
public UsersTable()
{
this.MenusTable = new HashSet<MenusTable>();
}
public int UserId { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
public string UserName { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
[DataType(System.ComponentModel.DataAnnotations.Dat aType.Password)]
[StringLength(50, MinimumLength = 6, ErrorMessage = "کلمه عبور باید بین 6 تا 50 کاراکتر باشد .")]
public string Password { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
[DataType(System.ComponentModel.DataAnnotations.Dat aType.Password)]
[System.Web.Mvc.Compare("Password", ErrorMessage = "کلمه عبور وارد شده همخوانی ندارد .")]
public string ConfirmPassword { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
public string FirstName { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
public string LastName { get; set; }
public virtual ICollection<MenusTable> MenusTable { get; set; }
}
وسمت کنترلر :
[HttpPost]
public ActionResult EditAccount(UsersTable user)
{
user.UserId = Convert.ToInt32(Session["LogedUserId"]);
if (user.Password == user.ConfirmPassword)
{
UserRepository _UR = new UserRepository();
_UR.Update(user);
return View(user);
}
else
return PartialView("_SetPasswordPartial");
و قسمت repository :
public void Update(UsersTable user)
{
var selectUser = _db.UsersTable.FirstOrDefault(M => M.UserId.Equals(user.UserId));
selectUser.FirstName = user.FirstName;
selectUser.LastName = user.LastName;
selectUser.UserName = user.UserName;
selectUser.Password = user.Password;
Save();
}
private void Save()
{
_db.SaveChanges();
}
کسی میدونه این اشکال برای چیه ؟
برنامه ای نوشتم که دارای ویرایش کاربر است .
من وقتی توو بخش ویرایش کاربر اطلاعات رو تغییر میدم و روی دکمه save کلیک میکنم با ارور زیر مواجه می شم .
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
جالب اینجاس که وقتی annotations های مربوط به ConfirmPassword رو در کلاسم حذف میکنم برنامه دیگه ارور نمیده .
کلاسم رو بصورت زیر تعریف کردم :
public partial class UsersTable
{
public UsersTable()
{
this.MenusTable = new HashSet<MenusTable>();
}
public int UserId { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
public string UserName { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
[DataType(System.ComponentModel.DataAnnotations.Dat aType.Password)]
[StringLength(50, MinimumLength = 6, ErrorMessage = "کلمه عبور باید بین 6 تا 50 کاراکتر باشد .")]
public string Password { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
[DataType(System.ComponentModel.DataAnnotations.Dat aType.Password)]
[System.Web.Mvc.Compare("Password", ErrorMessage = "کلمه عبور وارد شده همخوانی ندارد .")]
public string ConfirmPassword { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
public string FirstName { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
public string LastName { get; set; }
public virtual ICollection<MenusTable> MenusTable { get; set; }
}
وسمت کنترلر :
[HttpPost]
public ActionResult EditAccount(UsersTable user)
{
user.UserId = Convert.ToInt32(Session["LogedUserId"]);
if (user.Password == user.ConfirmPassword)
{
UserRepository _UR = new UserRepository();
_UR.Update(user);
return View(user);
}
else
return PartialView("_SetPasswordPartial");
و قسمت repository :
public void Update(UsersTable user)
{
var selectUser = _db.UsersTable.FirstOrDefault(M => M.UserId.Equals(user.UserId));
selectUser.FirstName = user.FirstName;
selectUser.LastName = user.LastName;
selectUser.UserName = user.UserName;
selectUser.Password = user.Password;
Save();
}
private void Save()
{
_db.SaveChanges();
}
کسی میدونه این اشکال برای چیه ؟