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;
}
}