首页 文章

实体框架 - 更新用户信息的问题

提问于
浏览
0

我是Entity Framework的新手,我必须更新数据库中的记录 . 我使用了MVC3框架生成的“编辑”示例,并尝试根据我的需要进行自定义 .

我有一个密码字段,在提交更新之前我需要用MD5加密它 . 除了db.SaveChanges()之外,所有进程都运行正常;它保存表单发布的数据 . 如果我尝试更改密码无关紧要,框架只是忽略它并保存表单中发布的数据 .

我的.cshtml文件:

<div class="editor-label">
    @Html.Label("password", "Senha")
</div>
<div class="editor-field">
    @Html.Password("password")
</div>

我的方法:

[HttpPost]
public ActionResult Editar(FormCollection form)
{
    var newPassword = form["password"];
    var email = Session["email"].ToString();

    UserSet user = db.UserSet.SingleOrDefault(m => m.Email == email);

    if (ModelState.IsValid)
    {
        //Changing password
        user.Password = Crypto.CalculateMD5Hash(newPassword);//this line is ignored
        TryUpdateModel(user);
        db.SaveChanges();
        return Redirect("~/Home/Mural");
    }
     return View(user);
}

我错过了什么?

1 回答

  • 1

    你的路线

    TryUpdateModel(user);
    

    将覆盖您之前在模型上所做的任何事情 .

    将订单更改为

    TryUpdateModel(user);
    user.Password = Crypto.CalculateMD5Hash(newPassword);//this line is ignored
    

    它可能会奏效 .

相关问题