il modello MVC legame con interfacce
-
26-09-2019 - |
Domanda
Ho creato un OrderFormViewModel che sembra qualcosa di simile
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è dettagli della consegna, i dettagli di pagamento, ecc ...) è quindi passata a una visione parziale che cattura i campi necessari.
Ho pensato che questo era tutto abbastanza pulito fino a quando mi sono imbattuto e sono reso conto, naturalmente, che il modello MVC legante non sa come creare un'istanza qualsiasi delle interfacce.
C'è un modo per risolvere questo in qualche modo?
Sto anche cercando di imparare DI utilizzando il contenitore Unità, quindi sto cercando di evitare di avere i riferimenti a tutte le classi concrete nel mio progetto di interfaccia utente (modello è in un progetto separato).
Soluzione
Una soluzione è quella di fare un modello personalizzato legante, ma questo significa percorso sarà necessario passare attraverso lo sforzo di tradurre elementi del modulo alle proprietà sull'oggetto. Tuttavia, si ha il controllo completo su cui si abitua attuazione IOrderDetails, per esempio, o si può avere la DI ti danno il giusto tipo concreto utilizzo di configurazione.
Altri suggerimenti
Una possibile soluzione potrebbe essere qui (in Interfaccia Binding Filtro vs Binding View Model): http://codetunnel.com/aspnet-mvc-model-binding-security/