Desde ahora he utilizado la excelente biblioteca FluentValidation para validar mis clases de modelo. En las aplicaciones web lo uso junto con el complemento jquery.validate para realizar la validación del lado del cliente también. Una desventaja es que gran parte de la lógica de validación se repite en el lado del cliente y ya no está centralizada en un solo lugar.Validación de modelo personalizado de propiedades dependientes usando Anotaciones de datos
Por esta razón estoy buscando una alternativa. Hay many ejemplos de there que muestran el uso de anotaciones de datos para realizar la validación del modelo. Se ve muy prometedor. Una cosa que no pude averiguar es cómo validar una propiedad que depende de otro valor de propiedad.
Tomemos por ejemplo el siguiente modelo:
public class Event
{
[Required]
public DateTime? StartDate { get; set; }
[Required]
public DateTime? EndDate { get; set; }
}
quisiera asegurar que EndDate
es mayor que StartDate
. Podría escribir un atributo de validación personalizado que extienda ValidationAttribute para realizar una lógica de validación personalizada. Por desgracia no pude encontrar una manera de obtener la instancia modelo:
public class CustomValidationAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
// value represents the property value on which this attribute is applied
// but how to obtain the object instance to which this property belongs?
return true;
}
}
encontré que el CustomValidationAttribute parece hacer el trabajo, ya que tiene esta propiedad ValidationContext
que contiene la instancia del objeto que se está validando. Lamentablemente, este atributo se ha agregado solo en .NET 4.0. Entonces mi pregunta es: ¿puedo lograr la misma funcionalidad en .NET 3.5 SP1?
ACTUALIZACIÓN:
Parece que FluentValidation already supports la validación del lado del cliente y los metadatos en ASP.NET MVC 2.
Sin embargo, sería bueno saber aunque si las anotaciones de datos podrían ser utilizados para validar propiedades dependientes .
¿usted o alguien ha descubierto una forma de obtener dataanotaciones y FluentValidation trabajando (para la validación) juntos en la misma clase/modelo? si eso fuera fantástico, tengo un hilo sobre esta discusión con el autor de FV Jeremy, puedes verlo aquí: http://fluentvalidation.codeplex.com/Thread/View.aspx?ThreadId=212371 –