5

J'ai créé un OrderFormViewModel qui ressemble àmodèle MVC liaison aux interfaces

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

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

} 

Cela va à mon Créer vue, où chaque section (à savoir les détails de livraison, les détails de paiement ... etc) est ensuite passé à une vue partielle qui capture les champs nécessaires.

Je pensais que tout cela était assez soigné jusqu'à ce que je l'ai couru et réalisé bien sûr que le classeur modèle MVC ne sait pas comment instancier l'une des interfaces.

Existe-t-il un moyen de résoudre ce problème? J'essaie aussi d'apprendre DI en utilisant le conteneur Unity, donc j'essaie d'éviter d'avoir des références à des classes concrètes dans mon projet d'interface utilisateur (le modèle est dans un projet séparé).

Répondre

5

Une solution consiste à créer un classeur de modèle personnalisé, mais ce chemin signifie que vous devrez faire l'effort de traduire les éléments de formulaire en propriétés sur votre objet. Cependant, vous avez un contrôle complet sur l'implémentation de IOrderDetails, par exemple, ou vous pouvez demander à votre DI de vous donner le bon type de béton en utilisant sa configuration.