在尝试向表中添加数据时出现错误。请让我知道我的代码有什么问题。我已经放置了所有代码。我希望这能帮助您理解我的问题。
这是我的操作方法“ RegisterButton”。通过这种操作方法,我正在向数据库添加数据。
public ActionResult RegisterButton(Models.Users User)
{
using (MyDbContext db = new MyDbContext())
{
db.Database.CreateIfNotExists();
if (ModelState.IsValid == false)
{
return View("Register", User);
}
else
{
db.Users.Add(User);
db.SaveChanges();
//Directory.CreateDirectory(string.Format("~/App_Data/{0}",User.UserName+User.Id.ToString()));
return RedirectToAction("Profile", "Profile", new { User.Id });
}
}
}
这是我的用户类及其属性:
public class Users
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required(ErrorMessage = "لطفا نام کاربريتان را وارد نماييد")]
[MaxLength(30, ErrorMessage = "لطفا مقدار کاراکتر هاي نام کاربريتان کمتر از 30 حرف برسانيد")]
[MinLength(8, ErrorMessage = "لطفا مقدار کاراکتر هاي نام کاربريتان بيشتر از 8 حرف برسانيد")]
[Display(Name = " نام کاربری")]
[Remote("CheckUserName","RegisterAndLogin","این نام کاربری قبا ثبت شده است")]
public string UserName { get; set; }
[NotMapped]
[Required(ErrorMessage = "لطفا پسوردتان را وارد نماييد")]
[MaxLength(30, ErrorMessage = "لطفا مقدار کاراکتر هاي پسورد کمتر از 30 حرف برسانيد")]
[MinLength(8, ErrorMessage = "لطفا مقدار کاراکتر هاي پسورد بيشتر از 8 حرف برسانيد")]
[Display(Name = " رمز عبور")]
public string Password { get; set; }
[NotMapped]
[Display(Name = " تکرار رمز عبور")]
public string AgainPassword { get; set; }
public Byte HashedPassword { get; set; }
[Required(ErrorMessage = "لطفا ايميلتان را وارد نماييد")]
[MaxLength(50, ErrorMessage = "لطفا مقدار کاراکتر هاي ايميليتان کمتر از 50 حرف برسانيد")]
[MinLength(8, ErrorMessage = "لطفا مقدار کاراکتر هاي ايميليتان بيشتر از 20 حرف برسانيد")]
[Display(Name = " پست الکترونیک")]
public string Email { get; set; }
[Required]
public virtual UserDetails UserDetail { get; set; }
[InverseProperty("UserOwner")]
public virtual ICollection<Images> OwnerImages { get; set; }
[InverseProperty("UserCreated")]
public virtual ICollection<Images> CreatedImages { get; set; }
}
这是我的UserDeatils类:
public class UserDetails
{
[Key]
[ForeignKey("User")]
public int UserId { get; set; }
[Display(Name ="نام")]
[Required(ErrorMessage = "لطفا نامتان را وارد نماييد")]
[MaxLength(30, ErrorMessage = "لطفا مقدار کاراکتر هاي نامتان کمتر از 30 حرف برسانيد")]
[MinLength(3, ErrorMessage = "لطفا مقدار کاراکتر هاي نامتان بيشتر از 3 حرف برسانيد")]
public string FirstName { get; set; }
[Required(ErrorMessage = "لطفا فاميليتان را وارد نماييد")]
[MaxLength(30, ErrorMessage = "لطفا مقدار کاراکتر هاي نامتان کمتر از 30 حرف برسانيد")]
[MinLength(3, ErrorMessage = "لطفا مقدار کاراکتر هاي نامتان بيشتر از 3 حرف برسانيد")]
[Display(Name = " نام خانوادگی")]
public string LastName { get; set; }
[Required(ErrorMessage = "لطفا اسم پدر را وارد نماييد")]
[MaxLength(30, ErrorMessage = "لطفا مقدار کاراکتر هاي نام پدرتان را کمتر از 30 حرف برسانيد")]
[MinLength(3, ErrorMessage = "لطفا مقدار کاراکتر هاي نام پدرتان را بيشتر از 3 حرف برسانيد")]
[Display(Name = " نام پدر")]
public string FatherName { get; set; }
[Required(ErrorMessage = "لطفا اسم مادر را وارد نماييد")]
[MaxLength(30, ErrorMessage = "لطفا مقدار کاراکتر هاي نام مادرتان را کمتر از 30 حرف برسانيد")]
[MinLength(3, ErrorMessage = "لطفا مقدار کاراکتر هاي نام پدرتان را بيشتر از 3 حرف برسانيد")]
[Display(Name = " نام مادر")]
public string MotherName { get; set; }
[Required(ErrorMessage = "لطفا سال تولدتان را وارد نماييد")]
[Display(Name = " زمان تولد")]
public DateTime BirthDate { get; set; } = DateTime.Now;
public virtual Users User { get; set; }
}
答案 0 :(得分:0)
UserDetail_Id
表中的Users
是必需的,因此您应该将其设置在某个位置(在您的情况下,在controller / RegisterButton
函数中)。
可能应该从视图中获取自定义视图模型,并将接收到的数据映射到User
对象。