2013-05-19 4 views
0

MVC 4를 사용하고 있는데 AddById (하우스 유지 용)라는 UserProfile에 새 필드를 추가하려고합니다. 계정을 만든 후SimpleMembershipProvider를 사용하여 사용자 계정 만들기

WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new 
       { 
        FirstName = model.FirstName, 
        LastName = model.LastName, 
        AddedDate = DateTime.UtcNow 
        AddedByID = // to sure how to get the id because the account has not been created yet. 
       }); 

은 그냥 AddById을 업데이트해야합니다 : 여기

내가 가진 무엇인가?

+0

왜 'Userprofile'을 (를) 사용하여 이미 '사용자 ID'를 갖고 계신가요? – Komengem

+0

@KomengeMwandila 지원 팀이 누군가를 위해 계정을 만들 수 있기 때문에. –

+0

관리자가 계정을 만든 다음 해당 사용자가 로그인 한 경우 ID가 생겨 새 계정을 만들 때 포함시킬 수 있습니다. – Jasen

답변

1

지원 팀이 누군가에 대한 계정을 만들 수 있기 때문에.

경우 것으로는 AddedByIDNullable 있는지 확인하면

는 그들이 User를 만들기 전에 Support Team 먼저 인증 할 수 있습니다.

그런 다음 Register Action을 다음과 같이 설정하십시오.

// 
    // POST: /Account/Register 

    [HttpPost] 
    [AllowAnonymous] 
    [ValidateAntiForgeryToken] 
    public ActionResult Register(RegisterModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      // Attempt to register the user 
      using (EfDb db = new EfDb()) 
      {          
       try 
       { 
        var userProfile = db.UserProfiles.Local.SingleOrDefault(u => u.UserName == User.Identity.Name) 
           ?? db.UserProfiles.SingleOrDefault(u => u.UserName == User.Identity.Name); 

         WebSecurity.CreateUserAndAccount(
          model.UserName, 
          model.Password, 
           new 
            { 
             FirstName = model.FirstName, 
             LastName = model.LastName, 
             AddedDate = DateTime.UtcNow, 
             AddedByID = userProfile.UserId 
            } 
          ); 

       catch (MembershipCreateUserException e) 
       { 
        ModelState.AddModelError("", ErrorCodeToString(e.StatusCode)); 
       } 
      } 
     } 

     // If we got this far, something failed, redisplay form 
     return View(model); 
    } 
+0

감사합니다. 내가 가진 것을 이해하지만 사용자가 자신의 계정을 만들면 어떨까요? 사용자를 생성하고 AddById 필드를 업데이트하는 트랜잭션을 사용하는 것이 가장 좋을까요? –

+0

@hbrock'AddedById'Nullable을 만들어서 계정 소유자가 만들었을 때'AddedById'가'Null'이고 누구에게 계정을 만들 었는지 충분히 알려줄 것을 제안했습니다. 또한 불필요한 데이터베이스로의 이동을 피할 수 있습니다. – Komengem

관련 문제