我是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);
}
我错过了什么?
答案 0 :(得分:1)
你的行
TryUpdateModel(user);
将覆盖您之前在模型上所做的任何事情。
将订单更改为
TryUpdateModel(user);
user.Password = Crypto.CalculateMD5Hash(newPassword);//this line is ignored
它可能会奏效。