5

我已經創建了一個OrderFormViewModel它看起來像MVC模型綁定到接口

public class OrderFormViewModel 
{ 
    public IOrderDetails { get; set; } 
    public IDeliveryDetails { get; set; } 
    public IPaymentDetails { get; set; } 
    // ... etc 

    public SelectList DropDownOptions { get; set; } 
    // ... etc 

} 

這正好我創建視圖,其中每個部分(即交付細節,付款細節...等)然後傳遞到一個部分視圖,捕獲必要的字段。

我以爲這是非常整潔,直到我跑它,並認識到當然,MVC模型聯編程序不知道如何實例化任何接口。

有沒有辦法解決這個問題?我也試圖使用Unity容器來學習DI,所以我試圖避免在我的UI項目中引用任何具體的類(模型在單獨的項目中)。

回答

5

一個解決方案是製作一個自定義模型綁定器,但是這個路徑意味着您需要經歷將表單元素轉換爲對象屬性的工作。但是,例如,您可以完全控制IOrderDetails的哪個實現被使用,或者您可以讓DI使用它的配置爲您提供正確的具體類型。