Dans mon application ASP.NET MVC, j'utilise Fluent validation pour valider mon models.Please jeter un oeil à mon modèle:erreur de validation fluent Faux disparaît après IIS redémarrage
[Table("INWARDDOCUMENTS")]
public class InwardDocument{
.......................
[Column("DOCDATE")]
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}"),Display(Name="Document date")]
public DateTime? DocDate { get; set; }
........................
}
Et voici la partie de validation couramment :
RuleFor(doc => doc.InwardDocument.DocDate.Value.Date).LessThanOrEqualTo(DateTime.Now.Date).When(x=>x.InwardDocument.DocDate!=null).WithMessage("Document date cannot be greater than the current date");
Dans l'ensemble, cela fonctionne très bien, mais en moyenne toutes les 3 semaines j'obtiens cette erreur de validation bien que la valeur du modèle soit correctement entrée. Comme vous pouvez le voir, je compare la partie date du modèle avec la partie date d'aujourd'hui, si une date est saisie. Donc, pas d'heures ou de minutes sont impliqués. J'entre la même information en mode débogage et ne reçois pas cette erreur de validation. Le seul remède est de redémarrer l'IIS. Juste cela suffit pour que le problème disparaisse. Une idée pourquoi?
Oui l'instanciation est singleton. Mais ce que je suis curieux de savoir, c'est si la mise en cache est la raison, alors cela ne devrait-il pas arriver tous les jours car la date mise en cache aujourd'hui sera déjà dépassée demain? Et quand vous dites que vous suggéreriez de ne pas faire référence à DateTime.Now directement dans le validateur, où me suggérez-vous de le faire? –
Quand j'ai dit ne pas référencer DateTime.Now directement, je voulais dire le référencer paresseusement en utilisant un func comme dans l'exemple. –