Sto utilizzando la convalida Data Annotation in modo esteso in ASP.NET MVC 2. Questa nuova funzione è stata un enorme risparmio di tempo, poiché ora sono in grado di definire la convalida lato client e la convalida lato server in un'unica posizione. Tuttavia, mentre stavo facendo alcuni test dettagliati, mi sono reso conto che è abbastanza facile per qualcuno aggirare la convalida lato server se facevo affidamento solo sulla convalida Data Annotation. Ad esempio, se ho definito un campo obbligatorio annotando la proprietà con l'attributo [Richiesto] e inserito una casella di testo per quel campo obbligatorio in un modulo, un utente potrebbe semplicemente rimuovere la casella di testo dal DOM (che può essere facilmente eseguita tramite Firebug) e ora la convalida Annotazione dei dati non verrà attivata su quella proprietà durante il ModelBinding all'interno di un Controller. Per garantire che venga attivata la convalida "richiesta", posso ripetere la convalida dopo il verificarsi di ModelBinding, ma in tal caso dovrei ripetere la logica di convalida.ASP.NET MVC: la convalida dell'annotazione dei dati è sufficiente?
Qual è la raccomandazione di tutti sulla convalida? La convalida dell'annotazione dei dati è sufficiente? Oppure la convalida deve essere ripetuta per garantire che le convalide vengano attivate in tutte le situazioni?
Follow-up commento: Sulla base delle risposte qui sotto, sembra che non posso contare sulla convalida del modello Binder e dati di annotazione da solo. Poiché stiamo concludendo che è necessaria una convalida aggiuntiva lato server, esiste un modo semplice per il mio livello di servizio di attivare la convalida in base a quanto definito nelle Annotazioni dei dati? Sembra che questo ci porterà il meglio di entrambe le parole ... non sarà necessario ripetere il codice di convalida, ma ci assicureremo comunque che la convalida venga eseguita anche se Model Binder non lo attiva.
Ho intenzione di postare questo commento di follow-up come una domanda separata, in quanto pone una domanda diversa da quella originale.
risposta del Koritnik risponde alla tua domanda di follow-up. Faccio la mia convalida in modo simile alla risposta che ha pubblicato. La stessa definizione DataAnnotation può essere utilizzata per la convalida sia del server che del client. –
La convalida dell'annotazione dei dati va bene se gli attributi di convalida forniti e il framework stesso sono adatti a te. Il comportamento con Richiesto è stato modificato per ASP.NET MVC 2 RTM a causa del feedback della comunità, quindi [Richiesto] ora funziona come ci si aspetterebbe. Optinally, check out: Validation Block (Enterprise Library), xVal, NHibernate Validators (presumibilmente non ha alcuna dipendenza da NHibernate ORM). – miha
'" Ho intenzione di postare questo commento di follow-up come una domanda separata, in quanto pone una domanda diversa da quella originale. "" Un collegamento a questa non sarebbe una cattiva idea, eh? – Sinjai