2013-02-16 36 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 में mycompany का 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