我在MVC网站中构建了一个模块,允许管理员创建,修改和删除网站用户。但是,我似乎无法通过以下代码更新用户信息:
[HttpPost]
public ActionResult Edit(User user)
{
if (ModelState.IsValid)
{
try
{
//CHANGE EXISTING USER
MembershipUser siteUser = Membership.GetUser(user.Username);
siteUser.Email = user.Email;
siteUser.IsApproved = true;
siteUser.Comment = "User Update on " + DateTime.UtcNow;
siteUser.UnlockUser();
Membership.UpdateUser(siteUser);
if (!String.IsNullOrEmpty(user.Password))
{
siteUser.ChangePassword(siteUser.GetPassword(), user.Password);
}
unitOfWork.UsersRepository.Update(user);
unitOfWork.Save();
return RedirectToAction("Index");
}
catch (Exception err)
{
// CODE REMOVED FOR BREVITY
}
}
return View(user);
}
有什么建议吗?
答案 0 :(得分:0)
进一步测试后,似乎有一行导致用户信息重置。
siteUser.UnlockUser();
在通过Membership.UpdateUser()
保存用户更改之前无法调用此行,否则更改将丢失。希望这可以节省一些人的头脑。