Domanda

Nella codifica di un'applicazione MVC tradizionale, qual è la procedura migliore per codificare le convalide dei moduli lato server?Il codice appartiene al controller o al livello del modello?E perché?

È stato utile?

Soluzione

Da Wikipedia:

Controller della visualizzazione del modello (MVC) è un modello architetturale utilizzato nell'ingegneria del software.L'utilizzo corretto del modello isola la logica aziendale dalle considerazioni sull'interfaccia utente, dando vita a un'applicazione in cui è più semplice modificare l'aspetto visivo dell'applicazione o le regole aziendali sottostanti senza influenzare l'altro.In MVC, il modello rappresenta le informazioni (i dati) dell'applicazione e le regole aziendali utilizzate per manipolare i dati;la vista corrisponde a elementi dell'interfaccia utente come testo, elementi casella di controllo e così via;e il controller gestisce i dettagli che coinvolgono la comunicazione al modello delle azioni dell'utente come sequenze di tasti e movimenti del mouse.

Quindi, modello: contiene l'applicazione e le regole aziendali.

Altri suggerimenti

Sono completamente d'accordo con Josh.Tuttavia è possibile creare una sorta di livello di convalida tra Controller e Modello in modo che la maggior parte delle convalide sintattiche possano essere eseguite sui dati prima che raggiungano il modello.

Per esempio,

Il livello di convalida convaliderebbe il formato della data, il formato dell'importo, i campi obbligatori, ecc...

Pertanto, quel modello si concentrerebbe esclusivamente sulle convalide aziendali come l'importo x dovrebbe essere maggiore dell'importo y.

La mia esperienza con MVC finora è stata interamente basata su binari.

Rails esegue la convalida al 100% nel modello.
Per la maggior parte funziona molto bene.Direi che 9 volte su 10 è tutto ciò di cui hai bisogno.

Esistono tuttavia alcune aree in cui ciò che invii da un modulo non corrisponde correttamente al tuo modello.Potrebbero esserci dei filtri/riarrangiamenti aggiuntivi o così via.

Il modo migliore per risolvere queste situazioni che ho trovato è creare oggetti modello fasullo, che sostanzialmente si comportano come oggetti modello ma mappano 1 a 1 con i dati del modulo.Questi oggetti modello falso in realtà non salvano nulla, sono solo un contenitore per i dati con convalide allegate.
Un esempio di una cosa del genere (nei binari) è Forma attiva

Una volta che i dati sono entrati in questi (e sono validi), di solito è un passaggio piuttosto semplice trasferirli direttamente ai modelli reali.

Il controllo della sintassi di base dovrebbe essere nel controllo poiché traduce l'input dell'utente per il modello.Il modello deve eseguire la validazione dei dati reali.

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