Dans ma demande de test je un champ datetime défini comme tel:DateTime accepte plus de 4 chiffres pour l'année
[Required(ErrorMessage = "This is required")]
[Display(Name = "test date:")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MMMM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? date1 { get; set; }
et à mon avis:
@Html.EditorFor(
model => model.date1,
new {
htmlAttributes = new {
@Value = Model.date1 != null ? Model.date1.Value.ToString("yyyy-MM-dd") : ""
}
})
@Html.ValidationMessageFor(model => model.date1, "", new { @class = "text-danger" })
Tout fonctionne bien, mais quand je rentre une date comme 10/03/19999 (jj, MM, aaaa), l'application se brise, évidemment la date que j'ai entré est fausse mais je ne suis pas sûr de la façon d'agir l'erreur. J'ai essayé d'utiliser datetime.tryparse pour la publication en cas d'échec mais ensuite je perds avec quoi j'ai rempli le formulaire.
Update:
la solution suivante quadzz, j'ai essayé:
[Required(ErrorMessage = "This is required")]
[Display(Name = "test date:")]
[DataType(DataType.Date)]
[Range(typeof(DateTime), "1/1/1900", "31/12/2000", ErrorMessage = "Value for {0} must be between {1} and {2}")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
mais il ne fonctionne toujours pas.
Pourquoi est-ce faux?Assurez-vous que cela va être LONGTEMPS avant d'arriver à 10000 mais un jour .. – BugFinder
Définir "les pauses de l'application" – Charleh
'DateTime' prend en charge l'année jusqu'à 9999. Si l'année est plus que cela, il a considéré le débordement (et peut jeter exception). Vous pouvez créer une structure personnalisée similaire à 'DateTime' avec une propriété' Year' à 5 chiffres, mais il semble que vous deviez déclarer plusieurs méthodes 'DateTime' dans la structure. –