2013-02-16 1 views
7

Я пишу MVC 4 C# .NET 4.5 веб-сайтWebSecurity.CreateUserAndAccount propertyValues ​​

Я хочу создать новый объект компании и зарегистрировать нового пользователя, который связан с этой компанией.

модель Моя учетная запись:

[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; } 
    } 

Если я вызываю после него добавляет пользовательский штраф, но имеет нуль в поле 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 
           }); 

, который я ожидал бы, как я не назначая это что угодно.

я попытался добавить (MyCompany является объектом компании):

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 
           }); 

Но я получаю сообщение об ошибке сказав, что это не может соответствовать типу.

Как я могу зарегистрировать пользователя, так что CompanyICanEdit содержит значение CompanyId моей компании?

Любая помощь будет оценена по достоинству. спасибо

ответ

19

Никогда не работал, как это сделать в 1 разом, обошел его в конце, если у кого-то такая же проблема.

// 
// 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

Если вы добавите int CompanyICanEditId {get; задавать; } и [ForeignKey ("CompanyICanEditId")] для свойства CompanyICanEdit, вы можете добавить CompanyICanEditId = company.Id в свойства созданного пользователя – blazkovicz

Смежные вопросы