我想允许用户更新他们的电子邮件,所以我有控制器:
[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;
}
除了数据库不更新新电子邮件之外,所有内容都构建并运行正常。 我该怎么办 ? 谢谢大家!
答案 0 :(得分:2)
我认为您的问题是您正在尝试直接更新记录,而不是设置Part的值并让Orchard保存您的更改:
user.As<UserPart>().Email = newEmail;
您的更改将在请求结束时自动提交给数据库。
另请注意,您更改未保存的原因是,在更新记录时,您需要使用注入的存储库明确更新它,例如_userRepository.Update(user.Record)
其中_userRepository是一个注入的IRepository<UserPartRecord>
,但只需要更新该部分即可。