Tiene un formulario donde un usuario puede ingresar la fecha/hora de inicio y la fecha/hora de finalización de un evento. Aquí está el validador hasta ahora:FluentValidation: validación en propiedades múltiples
public class EventModelValidator : AbstractValidator<EventViewModel>
{
public EventModelValidator()
{
RuleFor(x => x.StartDate)
.NotEmpty().WithMessage("Date is required!")
.Must(BeAValidDate).WithMessage("Invalid date");
RuleFor(x => x.StartTime)
.NotEmpty().WithMessage("Start time is required!")
.Must(BeAValidTime).WithMessage("Invalid Start time");
RuleFor(x => x.EndTime)
.NotEmpty().WithMessage("End time is required!")
.Must(BeAValidTime).WithMessage("Invalid End time");
RuleFor(x => x.Title).NotEmpty().WithMessage("A title is required!");
}
private bool BeAValidDate(string value)
{
DateTime date;
return DateTime.TryParse(value, out date);
}
private bool BeAValidTime(string value)
{
DateTimeOffset offset;
return DateTimeOffset.TryParse(value, out offset);
}
}
Ahora también me gustaría añadir que la validación EndDateTime> (propiedades combinado fecha + hora) StartDateTime, pero no sabe cómo hacerlo.
Editar: Para aclarar, necesito alguna manera de combinar EndDate + EndTime/StartDate + Hora de inicio es decir DateTime.Parse (src.StartDate + "" + src.StartTime) y luego validar EndDateTime vs StartDateTime - cómo hacer ¿Yo hago eso?
¿Es posible hacer el mismo lado del cliente? – SMC
Esto ya no es válido en FluentValitation. Esta es la respuesta correcta: http://stackoverflow.com/a/20546097/59119 – Natrium