2016-06-09 94 views
1

我希望每個用戶都連接到組織。我的單位是在Organization.cs定義在registerview模型中使用來自不同模型的對象

Organization.cs

public class Organization 
    { 
    public int ID { get; set; } 
    [Required] 
    [StringLength(70, MinimumLength = 3)] 
    public string Name { get; set; } 
    } 

AccountViewModel.cs

public class RegisterViewModel 
{ 
    [Required] 
    [Display(Name = "Username")] 
    public string Username { get; set; } 

    [Required] 
    [EmailAddress] 
    [Display(Name = "Email")] 
    public string Email { get; set; } 

    [Required] 
    public Organization myOrganization { get; set; } 

    /*Rest of Model*/ 

} 

在我看來,我想他們是用戶選擇他們想要組織一個下拉他們的帳戶與之相關聯。

我應該像這樣添加字段嗎?

public Organization myOrganization { get; set; } 

或者,我應該接受組織的身份證,然後將其存儲?

我使用的代碼第一次遷移,我將不勝感激,如果有人可以清除如何正確接受另一個模型的對象,並正確地生成數據庫表。

我最好的猜測是我的組織表和我的用戶表將合併到UserOrganizations中,就像我的角色和用戶表合併到UserRoles中以將它們連接起來一樣。不過,我對這一切都很陌生,所以我可能會錯。

+4

你需要屬性'int SelectedOrganisation'和'IEnumerable OrganisationList'在你的視圖模型中使用'@ Html.DropDownListFor(m => m.SelectedOrganisation,Model.OrganisationList,「請選擇''在視圖中 –

+0

驚訝你沒有寫這個答案,很好! –

回答

1

這取決於你是否想要存儲Id或Name,存儲這兩個屬性會有點沒有意義。下面的例子將存儲Name.Also你應該存儲這個值到你的Account表(默認表是AspNetUsers ),以便每個用戶都與一個組織相關聯。

您可以添加額外的字段到AspNetUsers,看看this這是非常有幫助的。

在你AccountViewModel應該有兩個屬性來完成的事情:

1)從組織表中檢索的組織名稱的列表

2)一個「SelectedOrganizationName」當你從下拉列表

回升

然後,我在你的[HTTPGET]控制器假設你已經加載下拉列表與組織table.On [HttpPost]控制器的數據,你會做這樣的事情:

[HttpPost] 
    public ActionResult Create(AccountViewModel avm) 
    {          
      if (ModelState.IsValid) 
      { 
       //do add account here... 
       dbcontext.SaveChanges(); 
       return RedirectToAction("Create"); 
      } 
      return View(avm); 
     }   
     return View(avm); 
    } 

然後,當您檢索時,由於您的帳戶表具有OrganizationName屬性,因此您可以使用AccountId檢索整個對象。

[HttpGet] 
public ActionResult Details(int id) 
    { 
     Users user = dbContext.Users.Find(id); 
     return View(user); 
    } 

要澄清一兩件事,會自動爲你創建作爲一個關聯實體的UserRole表(以解決許多一對多的用戶和角色之間的關係),但在你的情況下,用戶和組織關係,存在一對一,因此您不需要擁有UserOrganizations表。

+0

哦,好的!我認爲這可能是解決方案,並感謝澄清。這真的有幫助。在我有一些時間回到我的工作並嘗試一些事情之後,我會標記爲答案。 –

+0

Np很樂意提供幫助。 :-) –

相關問題