加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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();

>创建仅更新相关字段的自定义模型绑定器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读