2014-01-24 90 views
0

我正在嘗試爲包含對其他對象的引用的對象創建一些對象。查看嵌套類的對象

例如,

public class Person 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public ICollection<Subscription> Subscriptions { get; set; } 
} 

public class PersonSubscription 
{ 
    [Key, Column(Order = 1)] 
    public int PeopleID { get; set; } 
    public Person People { get; set; } 

    [Key, Column(Order = 2)] 
    public int SubscriptionID { get; set; } 
    public Subscription Subscription { get; set; } 
} 

public class Subscription 
{ 
    public int ID { get; set; } 
    public string Magazine { get; set; } 
    public ICollection<PersonSubscription> Subscriptions { get; set; } 
} 

在上面的例子中,當我創建一個新的人,我希望讓對方能夠被添加到一些新的或現有的訂閱。所以這意味着需要讓視圖知道系統中現有的訂閱。另外,在相關說明中,當添加先前不存在的訂閱時,需要創建一個新實例並將其添加到所有適當的數據庫。

我可能會反思這一點 - 我曾考慮過創建一個自定義模型聯編程序(enter link description here),但我不確定這是否過分。

回答

1

我不會用模型活頁夾做到這一點。模型綁定是一個基礎架構問題,通過框架的DefaultModelBinder可以很好地處理。當您需要執行類似綁定的模型而不使用無參數構造函數或自動填充請求或http上下文中的屬性時,使用自定義模型綁定器。

當您說您希望將某人添加到1個或更多訂閱時,這是您系統中的業務規則,而不是基礎設施問題。因此,使用自定義模型綁定器來做這件事會是對模型綁定定製掛鉤的濫用。要做到這一點的適當位置要麼在接受創建新人的請求的控制器動作中,要麼在一些較低層而不是MVC管道本身。

我不認爲你會得到一個非常有用的答案,但沒有更好地描述你想要完成的事情。你是說你的觀點應該有一個Person.Name的文本框,並可能有一個複選框旁邊的雜誌列表?可能是另一個文本框來進入一個定製雜誌?請澄清你的問題。