在Orchard中更新用户的电子邮件

时间:2013-06-06 08:18:50

标签: database orchardcms insert-update

我想允许用户更新他们的电子邮件,所以我有控制器:

[HttpPost]
public ActionResult ChangeEmail(string newEmail) {
    IUser user = _services.WorkContext.CurrentUser;
    if (!user.Is<UserPart>())
        throw new InvalidCastException();

    var userRecord = user.As<UserPart>().Record;
    userRecord.Email = newEmail;
    return null;
}

除了数据库不更新新电子邮件之外,所有内容都构建并运行正常。 我该怎么办 ? 谢谢大家!

1 个答案:

答案 0 :(得分:2)

我认为您的问题是您正在尝试直接更新记录,而不是设置Part的值并让Orchard保存您的更改:

user.As<UserPart>().Email = newEmail;

您的更改将在请求结束时自动提交给数据库。

另请注意,您更改未保存的原因是,在更新记录时,您需要使用注入的存储库明确更新它,例如_userRepository.Update(user.Record)其中_userRepository是一个注入的IRepository<UserPartRecord>,但只需要更新该部分即可。