我知道标题有点矛盾;但是,我有一个注册表单,也可以从用户那里获取更多详细信息,如名字,姓氏等。
在帐户控制器的Register方法中,我添加了一个Members对象,用数据填充它,但是,我需要注册的帐户的GUID(UserId)存储为“MemberId”。
用户必须单击注册才能进入此actionresult方法,但在程序流程离开之前不会创建userId。
如何获取已注册帐户的userId,因为它返回null?任何帮助表示赞赏。抱歉模棱两可。
public async Task<ActionResult> Register(RegisterForm model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.RegisterViewModel.Email, Email = model.RegisterViewModel.Email };
var result = await UserManager.CreateAsync(user, model.RegisterViewModel.Password);
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
var members = new Members()
{
MemberId = new Guid(User.Identity.GetUserId()),
// Obviously the above returns null because there is no userId yet.
FirstName = model.Members.FirstName,
LastName = model.Members.LastName,
PhoneNumber = model.Members.PhoneNumber,
Role = model.Members.Role
};
_context.Members.Add(members);
_context.SaveChanges();
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
return View(model);
}
答案 0 :(得分:0)
假设您正在使用EntityFramework,在调用UserManager.CreateAsync
后,user.Id
的属性将会更新。
因此您可以像这样使用用户ID:
MemberId = new Guid(user.Id)