2013-02-16 10 views
7

Piszę MVC 4 C# .NET 4.5 stronaWebSecurity.CreateUserAndAccount propertyValues ​​

Chcę utworzyć nowy obiekt firmy i zarejestrować nowego użytkownika, który jest związany z tą spółką.

Mój model konta:

[Table("UserProfile")] 
    public class UserProfile 
    { 
     [Key] 
     [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
     public int UserId { get; set; } 
     public string UserName { get; set; } 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
     public string EmailAddress { get; set; } 
     public string PhoneNumber { get; set; } 
     public bool MarketingEmailOptin { get; set; } 
     public bool isDisabled { get; set; } 
     public virtual Company CompanyICanEdit { get; set; } 
    } 

jeśli zadzwonię następujące Dodaje grzywny użytkownika, ale ma wartość null dla pola CompanyICanEdit:

WebSecurity.CreateUserAndAccount(addCompanyViewModel.User.UserName, 
           addCompanyViewModel.User.Password, 
           propertyValues: new 
           { 
            FirstName = addCompanyViewModel.User.FirstName, 
            LastName = addCompanyViewModel.User.LastName, 
            EmailAddress = addCompanyViewModel.User.EmailAddress, 
            PhoneNumber = addCompanyViewModel.User.PhoneNumber, 
            MarketingEmailOptin = addCompanyViewModel.User.MarketingEmailOptin, 
            isDisabled = false 
           }); 

której spodziewałbym jak nie jestem przypisywania to wszystko.

Próbowałem dodawania (mojafirma jest obiektem firma):

WebSecurity.CreateUserAndAccount(addCompanyViewModel.User.UserName, 
           addCompanyViewModel.User.Password, 
           propertyValues: new 
           { 
            FirstName = addCompanyViewModel.User.FirstName, 
            LastName = addCompanyViewModel.User.LastName, 
            EmailAddress = addCompanyViewModel.User.EmailAddress, 
            PhoneNumber = addCompanyViewModel.User.PhoneNumber, 
            MarketingEmailOptin = addCompanyViewModel.User.MarketingEmailOptin, 
            isDisabled = false, 
            CompanyICanEdit = mycompany 
           }); 

ale pojawia się błąd mówiąc, że nie może się równać typ.

Jak mogę zarejestrować użytkownika, aby CompanyICanEdit zawierał wartość CompanyId mojej firmy?

Każda pomoc zostanie doceniona. dzięki

Odpowiedz

19

Nigdy nie doszło do tego, jak to zrobić za pierwszym razem, ale otrzymałem na koniec, jeśli ktoś ma ten sam problem.

// 
// POST: /BusinessManager/ManageCompanies/Add 
[HttpPost] 
public ActionResult Add(AddCompanyViewModel addCompanyViewModel) 
{ 
    if (ModelState.IsValid) 
    { 
     // Create company and attempt to register the user 
     try 
     { 
      WebSecurity.CreateUserAndAccount(addCompanyViewModel.User.UserName, 
               addCompanyViewModel.User.Password, 
               propertyValues: new 
               { 
                FirstName = addCompanyViewModel.User.FirstName, 
                LastName = addCompanyViewModel.User.LastName, 
                EmailAddress = addCompanyViewModel.User.EmailAddress, 
                PhoneNumber = addCompanyViewModel.User.PhoneNumber, 
                MarketingEmailOptin = addCompanyViewModel.User.MarketingEmailOptin, 
                isDisabled = false 
               }); 

      db.Companies.Add(addCompanyViewModel.Company); 

      var newuser = db.UserProfiles.FirstOrDefault(u => u.UserName == addCompanyViewModel.User.UserName); 
      if (newuser != null) 
      { 
       newuser.CompanyICanEdit = addCompanyViewModel.Company; 
       db.Entry(newuser).State = EntityState.Modified; 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 
      else 
      { 
       ModelState.AddModelError("", "New user wasn't added"); 
      }      
     } 
     catch (MembershipCreateUserException e) 
     { 
      ModelState.AddModelError("", Mywebsite.Controllers.AccountController.ErrorCodeToString(e.StatusCode)); 
     } 

    } 

    return View(addCompanyViewModel); 
} 
+0

Jeśli dodasz int CompanyICanEditId {get; zestaw; } i [ForeignKey ("CompanyICanEditId")] dla właściwości CompanyICanEdit, następnie można dodać CompanyICanEditId = company.Id do właściwości utworzonego użytkownika – blazkovicz