2010-11-01 15 views

risposta

4

di convalida dovrebbe essere fatto al minimo la vista del modello, perché questo è quello che si riceve come argomento l'azione e contiene l'input dell'utente. Si potrebbe anche avere la convalida sul modello.

1

La mia risposta sarebbe ViewModel perché il modello può cambiare (ad esempio dall'uso di Linq2SQL a EF). In questo modo, quando si collega un altro modello, la convalida è ancora intatta.

1

Personalmente ho la mia convalida in 2 luoghi utilizzando DatiAnnotazioni. Il mio modello non è passato alla mia vista per intero. Dispongo di modelli separati per le mie visualizzazioni e traduco i dati dal modello di visualizzazione nel modello. In questo modo, posso mettere tutto quello che voglio nel mio modello di vista e lasciare fuori i pezzi che non voglio trattare.

Il mio ragionamento, tuttavia, è che ho un'applicazione Windows e un'applicazione Web che utilizza lo stesso modello. In questo modo, lo stesso insieme di regole di convalida governa il Modello per tutte le app, e il mio modello di vista può avere regole leggermente diverse se necessario. Naturalmente, questo crea una "duplicazione della logica" - bene, logica di validazione.

In questo modo non è necessario ricostruire i dati che non sono stati utilizzati nella pagina ogni volta che si torna al server o inseriti in campi nascosti e gonfiare la dimensione delle mie pagine.

0

Il modello deve implementare la convalida necessaria per garantire che il suo stato non possa essere invalidato; quella validazione appartiene sicuramente al modello. per esempio, una classe deve garantire che il titolo deve essere compreso tra 1 e 50 caratteri, la sua id deve essere> = 0 ecc

regole di business appartenere altrove (nei tuoi controller se si ha solo la vista del modello e il controller strati). questo potrebbe essere qualcosa di simile a un utente non può aggiungere più di 3 libri se il loro indirizzo email non è verificato.

La convalida nella visualizzazione deve essere limitata all'analisi dell'input dell'utente per dati non validi: anti xss, sql injection, fuori intervallo. ecc

1

È necessario inserire la convalida specifica dell'interfaccia utente in ViewModel e qualsiasi elemento correlato al processo aziendale o alla convalida del database nel modello. Questi potrebbero sovrapporsi.

+0

grazie per il commento, quindi userò le annotazioni di dati sia per il modello che per il viewmodel? (attributi) – Martin

Problemi correlati