I modelli devono corrispondere alla struttura della tabella, i Viewmodels corrispondono a come devono essere visualizzati i dati?

1

Ho una tabella di database con molte colonne, che voglio visualizzare su più pagine, simile a un modulo di raccolta di informazioni sullo stile di turbo fiscale. Con solo 1 o 2 elementi per pagina.

È giusto creare 1 modello, quindi un viewModel con solo determinate proprietà per ViewModel per ogni sezione che voglio creare in questo flusso di lavoro?

    
posta MVCylon 17.06.2011 - 15:22
fonte

3 risposte

2

L'intera idea di .NET MVC è quella.

I tuoi modelli devono lavorare nel tuo livello dati (Entity Framework, nHibernate o qualsiasi altra cosa ...) che rappresentano i tuoi dati, quindi la somiglianza con le tue tabelle. D'altra parte, dovrai definire i modi per presentare i dati ai tuoi utenti, cosa che avviene nelle visualizzazioni, e per farlo, puoi creare ViewModels. Possono sembrare uguali ma non sono uguali.

Prendiamo ad esempio un esempio in cui si ha un modello utente, un modello di gruppo in cui ogni utente ha un gruppo. I tuoi modelli di dati saranno Utente e Gruppo, ma il tuo ViewModel per creare un utente dovrebbe includere un elenco dei gruppi disponibili, in questo modo:

public class RegisterViewModel
{
    public string UserName { get; set; }
    public string Password { get; set; }
    public string PasswordConfirmation { get; set; }

    public IEnumerable<Group> AvailableGroups { get; set; }
    public int SelectedGroup { get; set; }
}

In un ViewModel stai mescolando due modelli, tieni presente che possono essere molto di più.

    
risposta data 17.06.2011 - 15:36
fonte
1

Certianamente se è così che vuoi che il tuo sito funzioni. Uno dei vantaggi di MVC è che puoi progettare il tuo modello indipendentemente da come vuoi che funzioni il tuo programma. Il tuo modello sono i tuoi dati. La tua vista è la tua interfaccia utente e il tuo controller di ViewModel è il livello logico che traduce i due.

    
risposta data 17.06.2011 - 15:30
fonte
1

In generale, sì, questo è un approccio valido.

Fai attenzione, però, a distinguere chiaramente tra il modello nel tuo ambiente MVC e la memorizzazione dei dati in un database. Il modo in cui archivi i tuoi dati dovrebbe essere quasi completamente indipendente dal modello. e il numero di colonne nella tabella del tuo database non dovrebbe avere un impatto sul design del tuo modello, a parte il fatto che questo particolare modello utilizza questa particolare tabella per l'archiviazione di alcuni o tutti i suoi dati. Ma allo stesso tempo potresti avere altri modelli che usano la stessa tabella o un modello usando più tabelle.

Il design del tuo modello dovrebbe essere basato sul problema che stai cercando di risolvere e non sul meccanismo di archiviazione sottostante.

    
risposta data 17.06.2011 - 15:42
fonte

Leggi altre domande sui tag