我试图让用户更改他的电子邮件,但是当我尝试更新数据库时,我得到一个例外:不支持指定的方法。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ManageEmail(LocalEmailModel model)
{
//UserProfile u = new UserProfile();
if (ModelState.IsValid)
{
bool TryPasswordNow;
var user = Membership.GetUser(User.Identity.Name);
MembershipUser u = Membership.GetUser(User.Identity.Name);
try
{
TryPasswordNow = WebSecurity.ChangePassword(User.Identity.Name, model.OldPassword, model.OldPassword);
}
catch (Exception)
{
TryPasswordNow = false;
}
if (TryPasswordNow == true)
{
user.Email = model.NewEmail;
db.SaveChanges();
u.Email = model.NewEmail;
Membership.UpdateUser(u);
}
return RedirectToAction("Manage", "Account");
}
return RedirectToAction("Manage", "Account");
}
正如您所见,我已尝试过db.savechanges和membership.updateuser。第一个通过,但没有更改电子邮件,第二个给了我一个例外。这些都不适用吗?为什么我的变更没有注册?感谢..
答案 0 :(得分:0)
如果您使用的是SimpleMembership提供程序(请检查您的web.config),这个问题可能是duplicate of another question。
为了扩展这一点,调用SaveChanges()的原因只是因为Entity Framework没有跟踪MembershipUser对象,所以调用它对数据库没有影响。