กรุณาฉันได้รับข้อผิดพลาดเมื่อใดก็ตามที่ฉันพยายามที่จะปรับปรุงรูปแบบตัวตนของผู้ใช้ของฉันผ่านมุมมองบางส่วนเพียงอย่างเดียว นี่เป็นวิธีการบางส่วนของฉัน:
[HttpGet]
[ChildActionOnly]
public ActionResult CheckOut(string Id)
{
Id = HttpContext.User.Identity.GetUserId();
var pickupuser = db.Users.Single(s => s.Id == Id);
CheckOutViewModel p = new CheckOutViewModel();
pickupuser.SurName = p.SurName;
pickupuser.UserName = p.UserName;
pickupuser.FirstName = p.FirstName;
pickupuser.DeliveryAddress = p.DeliveryAddress;
pickupuser.CustomerPhone = p.CustomerPhone;
pickupuser.DeliveryDate = p.DeliveryDate;
pickupuser.DeliveryTime = p.DeliveryTime;
pickupuser.CouponCode = p.CouponCode;
return PartialView("CheckOut", pickupuser);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> CheckOut(CheckOutViewModel appuser)
{
if (ModelState.IsValid)
{
var currentUser = User.Identity.GetUserId();
var cUser = db.Users.Single(u => u.Id == currentUser);
cUser.FirstName = appuser.FirstName;
cUser.SurName = appuser.SurName;
cUser.UserName = appuser.UserName;
cUser.CustomerPhone = appuser.CustomerPhone;
cUser.DeliveryDate = appuser.DeliveryDate;
cUser.DeliveryTime = appuser.DeliveryTime;
cUser.CouponCode = appuser.CouponCode;
try
{
//db.Entry(applicationUser).State = EntityState.Modified;
await db.SaveChangesAsync();
}
catch (DbEntityValidationException ex)
{
var errorMessages = ex.EntityValidationErrors
.SelectMany(x => x.ValidationErrors)
.Select(x => x.ErrorMessage);
var fullMessage = string.Join("", errorMessages);
var exceptionMessage = string.Concat(ex.Message, "The validation errors are:", fullMessage);
throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
}
}
return View(appuser);
}
และข้อผิดพลาดที่ฉันได้รับ:
Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.The validation errors are:The UserName field is required.
นี่เป็นวิธีการปกครองที่ฉันผ่านวิธี CheckOut () ลงใน:
public ActionResult DisplayCheckOut()
{
List<ProductsViewModel> ShoppingCart = productList;
var cUsers = HttpContext.User.Identity.Name;
ViewBag.email = db.Users.Where(d => d.UserName == cUsers).Select(a => a.Email).SingleOrDefault();
ViewBag.phone = db.Users.Where(d => d.UserName == cUsers).Select(a => a.CustomerPhone).SingleOrDefault();
return View(ShoppingCart);
}
คลาสโมเดลตัวตนของฉัน:
public class ApplicationUser : IdentityUser
{
public string CustomerPhone { get; set; }
public string CustomerLocation { get; set; }
public string CustomerImage { get; set; }
public string SurName { get; set; }
public string FirstName { get; set; }
public string CouponCode { get; set; }
[DataType(DataType.Date)]
public DateTime? DeliveryDate { get; set; }
[DataType(DataType.Time)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "0:HH:mm")]
public DateTime? DeliveryTime { get; set; }
public string OrderStatus { get; set; }
public string DeliveryAddress { get; set; }
public string TableNo { get; set; }
public string Comment { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
โมเดลมุมมองของฉัน:
public class CheckOutViewModel
{
[Display(Name = "Surname")]
public string SurName { get; set; }
[Display(Name = "Firstname")]
public string FirstName { get; set; }
[Display(Name = "Phone No")]
public string CustomerPhone { get; set; }
public string UserName { get; set; }
[Display(Name = "Shipping Address")]
//public string CustomerLocation { get; set; }
public DateTime? DeliveryTime { get; set; }
public DateTime? DeliveryDate { get; set; }
public string DeliveryAddress { get; set; }
[Display(Name = "Enter Coupon Code")]
public string CouponCode { get; set; }
}
สรุป: ฉันได้ตรวจสอบคุณสมบัติทั้งหมดของฉันและชื่อผู้ใช้ viewmodels ของฉันเป็นสตริงและไม่จำเป็นต้องใช้ มันอาจจะมาจากฐานข้อมูล ขอบคุณ
ในคลาส IdentityUser ของคุณฉันไม่เห็นคุณสมบัติชื่อ UserName แต่คุณกำลังตั้งค่าคุณสมบัติชื่อ UserName ในวิธีการ CheckOut () อย่างไร?
—
Fakhar Ahmad Rasul