Domanda

Quando si utilizza MVC e si convertono i dati in ViewModels, qual è il modo accettato per farlo?

Al momento sto usando AutoMapper per fare questo e funziona bene. Tuttavia ho visto in un articolo di blog (penso che fosse Rob C) avere un costruttore su ViewModel che prende il numero di parametri richiesti e quindi genera ViewModel

Ad esempio var RetViewModel = new ViewModel (MyObject);

Sembra un modo decente per farlo, pensieri?

È stato utile?

Soluzione

Il modo "accettato" " è generalmente il modo migliore per te.

Non ho mai sentito parlare di AutoMapper e quando l'ho esaminato, quello che ho ottenuto è stato che crea una mappatura di oggetti magici seguendo una certa convenzione.

Screencast su: http://www.dnrtv.com/default.aspx? showNum = 155

Nota: ho visto solo circa metà di quello screencast, quindi i miei pensieri su AutoMapper sono alquanto incompleti.

Personalmente non voglio usarlo perché richiede che scrivo un codice extra per mappare / " flatten " tra le proprietà dell'oggetto (codice, IMO, meglio lasciato nella logica del costruttore). Nell'esempio di screencast, quel codice viene solitamente inserito nei metodi di azione di un controller che può portare a gonfiore (mi piacciono i controller / azioni scarni)

Uso il metodo che hai dato nel tuo post, facendo in modo che il costruttore del modello prenda un oggetto e faccia tutto il lavoro.

Inoltre, creo sempre un costruttore vuoto che non accetta parametri in modo da poter impostare manualmente i valori delle proprietà dell'oggetto ViewModel.

Esempio:

CustomViewModel myModle = new CustomViewModle
{
    Property1 = "Something",
    Property2 = 3,
    //etc..
};

Per riassumere, prova in entrambi i modi e vedi cosa funziona per te. AutoMapper è un'ottima idea e posso vederlo aiutare in molte situazioni, tuttavia, penso che in alcuni punti quando lo usi scriverai tanto codice usando se dovessi usare i costruttori di oggetti.

Altri suggerimenti

Bene, il "quotato ufficialmente raccomandato" l'approccio è lasciare che il meccanismo di associazione del modello gestisca ciò per te. È più semplice e automatizza il processo. Il modello dovrà esporre le sue proprietà in lettura / scrittura affinché il raccoglitore sia in grado di inizializzarlo.

La seconda opzione di cui stai parlando probabilmente trarrà vantaggio dal rendere immutabili i tuoi modelli. Cioè, si rendono tutte le proprietà di sola lettura e si inizializzano una volta tramite i parametri del costruttore. Ciò richiederà di esaminare direttamente FormCollection per estrarre i valori inviati. Questo è più lavoro ma ha i suoi vantaggi come essere un tipo di programmazione difensiva.

Non posso dire in che modo sia meglio, entrambe sono opzioni. Personalmente preferisco il secondo stile per ora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top