Comment puis-je forcer le format de la date dans asp.net mvc 4 ? En mode affichage, il s'affiche comme je le souhaite, mais pas en mode édition. J'utilise displayfor et editorfor et applyformatineditmode=true avec dataformatstring="{0:dd/MM/yyyy}". Ce que j'ai essayé :
- la globalisation dans web.config (les deux) avec ma culture et mon uiculture.
- modification de la culture et de l'uiculture dans application_start()
- lien de modèle personnalisé pour datetime
Je n'ai aucune idée de la manière de le forcer et j'ai besoin de saisir la date sous forme de jj/MM/aaaa et non par défaut.
PLUS D'INFO : mon modèle de vue est comme ceci
[DisplayName("date of birth")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? Birth { get; set; }
en vue j'utilise @Html.DisplayFor(m=>m.Birth)
mais cela fonctionne comme prévu (je vois le formatage) et pour entrer la date, j'utilise @Html.EditorFor(m=>m.Birth)
Mais si j'essaie d'entrer quelque chose comme le 13/12/2000, le message d'erreur suivant s'affiche : ce n'est pas une date valide (le 13/12/2000 et le 13/12/2000 fonctionnent comme prévu, mais j'ai besoin du jour/MM/aaaa).
Le modelbinder personnalisé est appelé dans application_start() car je ne sais pas où le faire autrement.
Utilisation de <globalization/>
J'ai essayé avec culture="ro-RO", uiCulture="ro"
et d'autres cultures qui me donneraient dd/MM/yyyy. J'ai également essayé de le définir sur une base par thread dans application_start() (il y a beaucoup d'exemples ici, sur la façon de le faire).
Pour tous ceux qui liront cette question : Il semble que la réponse de Darin Dimitrov fonctionnera tant que je n'aurai pas de validation côté client. Une autre approche consiste à utiliser une validation personnalisée, y compris une validation côté client. Je suis heureux d'avoir découvert cela avant de recréer l'ensemble de l'application.