如何在创建帐户之前使用userId?

时间:2017-09-29 08:48:34

标签: c# asp.net-mvc asp.net-mvc-4

我知道标题有点矛盾;但是,我有一个注册表单,也可以从用户那里获取更多详细信息,如名字,姓氏等。

在帐户控制器的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);
    }

1 个答案:

答案 0 :(得分:0)

假设您正在使用EntityFramework,在调用UserManager.CreateAsync后,user.Id的属性将会更新。

因此您可以像这样使用用户ID:

MemberId = new Guid(user.Id)