c# – 如何使用asp.net mvc 4避免在模型中更新某些字段
发布时间:2020-12-15 05:38:41 所属栏目:百科 来源:网络整理
导读:我是asp.net mvc 4和EF的新手.我正在创建用户模型,用于创建/更新用户信息.模型代码如下: ....public int UserID { get; set; }[Required]public string UserName { get; set; }[Required]public string Password { get; set; }[Compare("Password")] public
我是asp.net mvc 4和EF的新手.我正在创建用户模型,用于创建/更新用户信息.模型代码如下:
.... public int UserID { get; set; } [Required] public string UserName { get; set; } [Required] public string Password { get; set; } [Compare("Password")] public string VerifyPassword { get; set; } ..... SOME OTHER FIELDS COMES HERE ...... 这个模型用于创建/更新活动.这适用于创建用户但在更新时我不希望用户更新他的Id,用户名因此我保持readonly也不想显示用户密码/验证密码字段所以我从视图中删除它.现在,在更新(编辑模式)时,我总是收到密码字段的验证错误消息.所以我的问题是如何避免更新这些字段并更新其他字段.为了解决这个问题,我尝试创建viewmodel,但它对我没有帮助.还在控制器中添加了绕过验证的代码: public ActionResult Edit(User user) { ModelState.Remove("Password"); ModelState.Remove("VerifyPassword"); ModelState.Clear(); if (ModelState.IsValid) { db.Entry(user).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } } 这给了我ModelState.IsValid = true但无法更新.请给我解决这个问题的方法. 提前致谢.. 解决方法
>您可以手动设置仅更新的字段并保存更改.
>您可以先重置从数据库中获取的值.如下所示(请原谅任何错误) var userFromDb = db.Users.Where(u => u.UserID == user.UserID).First(); user.Password = person.Password; user.VerifyPassword = person.VerifyPassword; db.Entry(person).CurrentValues.SetValues(user); db.SaveChanges(); >创建仅更新相关字段的自定义模型绑定器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |