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

时间:2011-09-26 22:21:24

标签: asp.net-mvc-3 entity-framework-4

我是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 个答案:

答案 0 :(得分:1)

你的行

TryUpdateModel(user);

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

将订单更改为

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

它可能会奏效。