Respuesta

6

Entrada tardía a la discusión porque no quiero comenzar una nueva pregunta. De donde vengo es para determinar la mejor práctica para aplicar a un proyecto MVC ASP.NET de tamaño medio.

primer lugar quisiera resumir nuestras opciones: -

1) IDataErrorInfo es fácil de implementar. Todo lo que necesita es derivar IDataErrorInfo en su clase de modelo. El problema es que está permitiendo que su modelo vinculante haga cumplir las reglas de su negocio. Las reglas comerciales deben ser aplicadas por el Modelo. La otra pega para IDataErrorInfo (y también para DataAnnotations) es que (parafraseando desde Steven Sanderson's book no pudo informar múltiples errores relacionados con una sola propiedad o múltiples errores relacionados con el modelo de objetos whle.

2) DataAnnotation para mí, es como una verificación de esquema (validación). Este es el primer control que su aplicación debería hacer. Sin embargo (en mi humilde opinión), no es adecuado para implementar sus reglas comerciales.

3) Implemente su propio ModelBinder. Aunque esto se puede hacer, pero hablando en serio, el uso de ModelBinder es analizar y vincular sus datos a su modelo y no realizar validaciones complicadas y verificaciones de reglas comerciales. Dejaría la verificación de reglas comerciales implementada en su capa Modelo/Dominio.

4) Haga rodar el suyo - Validando con una capa de servicio (ver this. El ejemplo mostrado tiene su ventaja de desacoplarse del Controlador y Estado del Modelo usando una clase de interfaz. Otra opción es lanzar una excepción apropiada de su capa de modelo Esta última opción es útil cuando implementa su capa de servicio en una aplicación separada (por ejemplo, una aplicación WCF).

¿Qué opina ?: Para un proyecto de tamaño mediano a grande, ¿cuál de las opciones anteriores ha utilizado (o la intención de adoptar) y por qué?

Cheers

+0

En el punto 1, creo que INotifyDataErrorInfo será compatible con .Net 4.5 y que maneja múltiples errores para una sola propiedad. –

5

Parece que las Anotaciones de Datos están recibiendo soporte oficial en MVC 2.0. Scott Guthrie publicó un good article al hacer la validación del modelo en 2.0 utilizando DataAnnotations. Dado que el equipo parece encaminarse en esta dirección, podría considerar un voto a su favor.

4

DataAnnotations son más fáciles de implementar y obtener soporte directamente en MVC 2.0.

Sin embargo, IDataErrorInfo le permite hacer una validación más compleja (es decir, validación que genera múltiples propiedades, etc.).

Sin embargo, los dos se pueden mezclar y usar juntos. No hay nada que te impida implementar ambas técnicas.

+0

Esto también es posible con ComponentModel.DataAnnotations utilizando la interfaz IValidatableObject. Con esta interfaz también puede realizar una validación que genera múltiples propiedades. –

Cuestiones relacionadas