0

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

[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;
}

除了数据库不更新新电子邮件之外,一切都可以正常构建和运行。我应该怎么办 ?谢谢大家!

4

1 回答 1

2

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

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

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

作为旁注,您的更改未保存的原因是,当您更新记录时,您需要使用注入的存储库显式更新它,例如_userRepository.Update(user.Record)其中 _userRepository 是注入的IRepository<UserPartRecord>,但只更新部分是要走的路。

于 2013-06-07T06:28:28.837 回答