11

Sto cercando di decidere quale approccio di convalida adottare per un nuovo progetto MVC ASP.NET. (E wow ci sono un sacco di opzioni!)Quale libreria di convalida per ASP.NET MVC?

Il progetto utilizza NHibernate, quindi la prima cosa che ho considerato è stata l'NHibernate Validator (a causa della stretta integrazione con NHibernate). Tuttavia, per quanto posso vedere ci sono solo un paio di vantaggi per questa stretta integrazione:

1) Gli schemi DB generati da NHibernate includeranno i dettagli di convalida (ad esempio, le lunghezze delle colonne saranno impostate sul valore massimo consentito nella convalida) . (Questo non è di mio interesse, tuttavia, poiché genera schemi manualmente.)

2) NHibernate genererà un'eccezione se si tenta di salvare i dati che non soddisfano le specifiche di convalida. (Questo mi sembra abbastanza ridondante, dal momento che i dati presumibilmente saranno già convalidati da qualunque meccanismo tu scelga prima di salvare comunque)

Se ci sono più vantaggi per il validatore NHibernate fammi sapere!

Altre librerie che ho letto un po 'includono:

  • MS DataAnnotations
  • Castello Validator
  • Qualcos'altro?

Ho anche pensato di utilizzare xVal per fornire la convalida lato client dallo stesso insieme di regole. Tuttavia, sento che ASP.NET MVC v2 includerà qualcosa di simile a xVal (integrazione con jquery) fuori dalla scatola? Questa nuova funzionalità inclusa renderà ridondanti alcuni degli altri?

Quindi, sostanzialmente chiedo consiglio alla gente su quale direzione prendere qui. Non voglio implementare uno schema particolare, solo per doverlo strappare quando un altro diventa la tecnologia dominante.

Che cosa ha funzionato per te? Quale opzione pensi abbia/avrà il vantaggio?

Grazie!

risposta

10

Sono stato con FluentValidation con jQuery validation plug-in e ancora non riesce a trovare una situazione che non può gestire.

+0

Questo sembra molto interessante, grazie per la pubblicazione. Analizzerò più approfonditamente in un secondo momento: a prima vista sembra che v potrebbe essere positivo per la convalida delle regole aziendali. La convalida dei dati di base potrebbe essere un po 'più prolissa, ma non un grosso problema. Sai quanto bene questa impostazione gestisce l'internazionalizzazione? – UpTheCreek

+0

Per i18n è possibile inserire tutti i messaggi in un file di risorse e utilizzarli nel metodo WithMessage FluentValidation. –

+0

Ho accettato questa come risposta, in quanto è una libreria che non ho mai visto prima. Sembra buono, e sto cercando di implorarlo ora. – UpTheCreek

5

Mi piace xVal.

È possibile implementare con facilità convalida client e server. Inoltre esiste il supporto per la validazione di colonne (proprietà) su entità che si desidera utilizzare.

+0

Grazie. Quale meccanismo di validazione sottostante stai usando? Castello? Annotazioni dei dati? – UpTheCreek

+1

Non sono sicuro di Misha, ma usiamo xVal + DataAnnotations.Ho creato un generatore T4 che emette i nostri oggetti business e DAL e inserisce gli attributi appropriati sui membri dei dati. – GalacticCowboy

+0

DataAnnotations, ma a dire il vero ho scelto di lavorare con DataAnnotations senza investigare se qualche altro meccanismo sarebbe meglio. Quindi, non so perché uno sarebbe migliore di un altro. –

1

Questo potrebbe essere interessato a questo delegate approach. Ero perché non mi piaceva l'idea xVal (la soluzione im attualmente in corso) e il fatto che non sembrava soddisfare i casi di convalida complessi che incrociavano più proprietà delle stesse strutture di classe o addirittura diverse.

+0

Grazie, esaminerò questo. – UpTheCreek

Problemi correlati