una tres tipo saber que otra net mayor fechas fecha entre ejemplos diferencia dato comparar asp.net-mvc asp.net-mvc-4 data-annotations

asp.net-mvc - tres - saber si una fecha es mayor que otra c#



La anotaciĆ³n de datos mvc4 compara dos fechas (2)

Eche un vistazo a Validación fluida o Validación a prueba de MVC : esos pueden ayudarle mucho.

Con Foolproof, por ejemplo, hay una [GreaterThan("StartDate")] que puede usar en su propiedad de fecha.

O si no desea utilizar otras bibliotecas, puede implementar su propia validación personalizada implementando IValidatableObject en su modelo:

public class ViewModel: IValidatableObject { [Required] public DateTime StartDate { get; set; } [Required] public DateTime EndDate { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (EndDate < StartDate) { yield return new ValidationResult(errorMessage: "EndDate must be greater than StartDate", memberNames: new[] { "EndDate" }); } } }

Tengo estos dos campos en mi modelo:

[Required(ErrorMessage="The start date is required")] [Display(Name="Start Date")] [DisplayFormat(DataFormatString = "{0,d}")] public DateTime startDate { get; set; } [Required(ErrorMessage="The end date is required")] [Display(Name="End Date")] [DisplayFormat(DataFormatString = "{0,d}")] public DateTime endDate{ get; set; }

Requiero que endDate debe ser mayor que startDate . Intenté usar [Compare("startDate")] pero esto solo funciona para la operación igual.

¿Qué debería usar para la operación "mayor que"?


La interfaz IValidatableObject proporciona una forma de validar un objeto que implementa el método IValidatableObject.Validate (ValidationContext validationContext). Este método siempre devuelve el objeto IEnumerable. Es por eso que debe crear una lista de objetos ValidationResult y los errores se agregan a esto y regresan. La lista vacía significa validar sus condiciones. Eso es lo siguiente en mvc 4 ...

public class LibProject : IValidatableObject { [Required(ErrorMessage="Project name required")] public string Project_name { get; set; } [Required(ErrorMessage = "Job no required")] public string Job_no { get; set; } public string Client { get; set; } [DataType(DataType.Date,ErrorMessage="Invalid Date")] public DateTime ExpireDate { get; set; } IEnumerable<ValidationResult> IValidatableObject.Validate(ValidationContext validationContext) { List < ValidationResult > res =new List<ValidationResult>(); if (ExpireDate < DateTime.Today) { ValidationResult mss=new ValidationResult("Expire date must be greater than or equal to Today"); res.Add(mss); } return res; } }