11

Estoy tratando de decidir qué enfoque de validación tomar para un nuevo proyecto ASP.NET MVC. (¡Y hay muchas opciones!)¿Qué biblioteca de validación para ASP.NET MVC?

El proyecto usa NHibernate, así que lo primero que consideré fue el validador NHibernate (debido a la estrecha integración con NHibernate). Sin embargo, hasta donde puedo ver, esta estrecha integración ofrece solo un par de ventajas:

1) Los esquemas DB generados por NHibernate incluirán detalles de validación (por ejemplo, las longitudes de las columnas se establecerán en el valor máximo permitido en la validación) . (Esto no me interesa realmente, ya que genero esquemas manualmente.)

2) NHibernate lanzará una excepción si intenta guardar datos que no cumplen con las especificaciones de validación. (Esto me parece bastante redundante, ya que los datos probablemente ya estarán validados por el mecanismo que elija antes de guardarlos de todos modos)

¡Si NHibernate Validator obtiene más beneficios, por favor hágamelo saber!

Otras bibliotecas que he estado leyendo un poco sobre incluyen:

  • MS DataAnnotations
  • Castillo Validador
  • Algo más?

También he estado pensando en usar xVal para proporcionar validación del lado del cliente del mismo conjunto de reglas. Sin embargo, he oído que ASP.NET MVC v2 incluirá algo similar a xVal (integración con jquery) de fábrica. ¿Esta nueva funcionalidad incluida hará que algunos de los otros sean redundantes?

Así que, básicamente, estoy pidiendo el consejo de la gente sobre qué dirección tomar aquí. No quiero implementar un esquema particular, solo para tener que arrancarlo cuando otro se convierta en la tecnología dominante.

¿Qué le ha funcionado? ¿Qué opción crees que tiene/tendrá la ventaja?

Gracias!

Respuesta

10

He estado usando FluentValidation junto con jQuery validation plugin y todavía no puede encontrar una situación que no puede manejar.

+0

Esto se ve muy interesante, gracias por publicar. Voy a echar un vistazo más profundo más adelante: a primera vista, parece que podría ser bueno para la validación de reglas comerciales. La validación de datos básicos puede ser un poco más detallada, pero no es un gran problema. ¿Sabes qué tan bien esta configuración maneja la internacionalización? – UpTheCreek

+0

Para i18n, puede colocar todos los mensajes en un archivo de recursos y usarlos en el método WithMessage FluentValidation. –

+0

He aceptado esto como la respuesta, ya que es una biblioteca que no había visto antes. Se ve bien, y estoy buscando implementarlo ahora. – UpTheCreek

5

Me gusta xVal.

Puede implementar con mucha facilidad validación de cliente y servidor. También hay soporte para la validación de columna (propiedad) en entidades que le gustaría usar.

+0

Gracias. ¿Qué mecanismo de validación subyacente estás usando? ¿Castillo? Anotaciones de datos? – UpTheCreek

+1

No estoy seguro acerca de Misha, pero usamos xVal + DataAnnotations.Construí un generador T4 que emite nuestros objetos comerciales y DAL, y pone los atributos apropiados en los miembros de datos. – GalacticCowboy

+0

DataAnnotations, pero para ser sincero, acabo de elegir trabajar con DataAnnotations sin investigar si algún otro mecanismo sería mejor. Entonces, no sé por qué uno sería mejor que otro. –

1

Le puede interesar delegate approach. Fui porque no me gustaba la idea xVal (la solución que actualmente estoy usando) y el hecho de que no parecía atender casos complejos de validación que cruzaban propiedades múltiples de la misma o incluso estructuras de clases diferentes.

+0

Gracias, investigaré esto. – UpTheCreek

Cuestiones relacionadas