5

Ho creato un OrderFormViewModel che sembra qualcosa di similemodello MVC legame con interfacce

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

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

} 

Questo va al mio Crea vista, dove ogni sezione (cioè consegna particolari, dettagli di pagamento, ecc ...) viene quindi passato a una vista parziale che cattura i campi necessari.

Ho pensato che fosse tutto abbastanza pulito fino a quando non l'ho eseguito e ho capito, ovviamente, che il raccoglitore modello MVC non sa come istanziare nessuna delle interfacce.

C'è un modo per risolvere questo in qualche modo?

Sto anche cercando di imparare DI utilizzando il contenitore Unity, quindi sto cercando di evitare di avere riferimenti a classi concrete nel mio progetto di interfaccia utente (il modello è in un progetto separato).

risposta

5

Una soluzione consiste nel creare un raccoglitore modello personalizzato, ma questo percorso significa che è necessario passare attraverso lo sforzo di tradurre gli elementi del modulo in proprietà sul proprio oggetto. Ad ogni modo, hai il controllo completo su quale implementazione di IOrderDetails usi, per esempio, o puoi avere il tuo DI che ti dà il tipo concreto giusto usando la sua configurazione.