ViewModel è un'astrazione della vista.
Ciò significa che devi sapere prima cosa vuoi mostrare all'utente. Almeno dovresti avere uno schizzo dettagliato di come sarà l'interfaccia utente (ci sono molti strumenti pensati per fare questo: MS Expression Blend , Balsamiq , ecc.). O persino un'interfaccia utente fittizia senza logica collegata, creata con il tuo strumento di sviluppo.
Una volta che hai la tua vista, ViewModel sarà il posto in cui tenere ogni valore associato, e ciò che potrebbe essere chiamato logica di visualizzazione, principalmente la formattazione. Un modello di vista può essere una rappresentazione di un modello, un gruppo di modelli dello stesso tipo o un'aggregazione di modelli diversi.
Un semplice esempio di Visualizza modello è la schermata di modifica con un elenco a discesa. Facciamo un esempio concreto con un utente che può essere collegato a una divisione:
public class UserModel
{
public string Username { get; set; }
public string EmailAddress { get; set; }
public int DivisionId { get; set; }
}
public class DivisionModel
{
public int DivisionId { get; set; }
public string DivisionName { get; set; }
}
Non avrebbe senso collegare un IEnumerable di divisioni in UserModel, quindi creiamo un modello di visualizzazione per rappresentare un utente visualizzabile, con tutti i dati necessari per avere una schermata di lavoro in cui posso selezionare una divisione per tale utente:
public class UserViewModel
{
public UserModel User { get; set; }
public IEnumerable<DivisionModel> Divisions {get; set;}
}
E questo è tutto. A seconda della lingua che userò, dovrò semplicemente inserire un elenco a discesa con IEnumerable
di DivisionModels
e farlo mostrare al membro Name.