2010-05-07 28 views
6

Sto cercando di imparare Domain Driven Design e di recente ho letto che molte persone sostengono la creazione di un ViewModels per le viste che memorizzano tutti i valori che si desidera visualizzare in una determinata vista.Dove e come convalidare e mappare ViewModel?

La mia domanda è come devo fare la convalida del modulo? dovrei creare classi di convalida separate per ogni vista o raggrupparle insieme? Sono anche confuso su come sarebbe il codice.

È così che ho attualmente che convalida e ViewModels adattano a schema delle cose:

View (alcuni input dell'utente) -> Controller -> FormValidation (di ViewModel) -> (Se mappa valido ViewModel a Modello di dominio) -> Domain Layer Service -> Infrastruttura

Grazie!

P.S. Uso Asp.net MVC con C#

risposta

0

Ho sperimentato l'inserimento della convalida del mio modulo in ViewModel e per la convalida di business complessi utilizzo un livello di servizio.

Questo è stato effettivamente lavorando davvero bene e il codice è molto più facile da leggere e da gestire

0

Suggerisco di inserire le regole di convalida nel modello di dominio. Questo è il modo più semplice e ripetitivo (utilizzare System.ComponentModel.DataAnnotations, ad esempio: il raccoglitore modello predefinito MVC 2 lo supporta immediatamente).
Se si dispone di un modello di dominio ampio e complesso e non si è bloccati con proprietà di mapping con gli stessi nomi, provare a utilizzare AutoMapper, che è uno strumento straordinario per svolgere questo tipo di lavoro.

0

Convalida il modello di vista sul livello di presentazione. Tenere presente che è necessario convalidare solo la convalida relativa alla presentazione (la data è nel formato corretto, nome! = "", Ecc.).

Asp.net Mvc ha qualche in-built validation support che di solito è sufficiente per la convalida di base.

La parte difficile quando si applica la progettazione basata sul dominio è la convalida del dominio. Potrebbero esserci regole complesse, dipendenze da repository e roba simile che potrebbero rendere la 'validazione in esecuzione' senza rendere abbastanza difficile il domain model dumb.

Pertanto, sembra una buona idea non lasciare mai che l'oggetto dominio scivoli nello stato invalid e genera un'eccezione nel caso in cui ciò accada.


Meglio non provare a mappare meccanicamente vista del modello a modello di dominio - questo approccio aumenta l'accoppiamento, potrebbe rompere l'incapsulamento del vostro modello di dominio e muto verso il basso.

0

Questa è una domanda comune ed è uno che non ha sempre una risposta corretta. Dai un'occhiata a this post di Derick Bailey. È una buona discussione su questa domanda e ha diversi link ad altri fantastici messaggi sul problema.

Problemi correlati