2017-09-29 2 views
1

私はタイトルが暴言のビットであることを知っています。私は登録フォームを持っていますが、氏名、姓などのユーザーからの詳細情報も受け取ります。アカウントを作成する前にどのようにユーザーIDを取得できますか?

アカウントコントローラーの登録メソッドの中で、メンバーオブジェクトを追加し、ただし、登録するアカウントのGUID(UserId)を「MemberId」として保存する必要があります。

ユーザは、このactionresultメソッドに入るためには、registerをクリックしなければならないが、プログラムフローがなくなるまでuserIdは作成されない。

登録されたアカウントのユーザーIDを取得するにはどうすればいいですか?どんな助けもありがとうございます。あいまいさを残して申し訳ありません。

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

。 – DSR

+0

ありがとう、UserManagerを使用してuserIdを返し、今すぐ動作します。 – Ralf

答えて

0

user.Idためのプロパティが更新されていますUserManager.CreateAsyncを呼び出した後、あなたがEntityFrameworkを使用していると仮定。

だから、このようにユーザーIDを使用することができます:あなたは登録ユーザーのdetialsを取り戻すためにmodel.RegisterViewModel.Emailを渡すことによってUserManager.FindByNameAsync(model.RegisterViewModel.Email)を呼び出すことができます

MemberId = new Guid(user.Id) 
+0

ありがとうございます。それは動作します。 – Ralf

関連する問題