How can I force the format of datetime in asp.net mvc 4 ? In display mode it shows as I want but in edit model it doesn't. I am using displayfor and editorfor and applyformatineditmode=true with dataformatstring="{0:dd/MM/yyyy}" What I have tried:
- globalization in web.config (both of them) with my culture and uiculture.
- modifying the culture and uiculture in application_start()
- custom modelbinder for datetime
I have no idea how to force it and I need to input the date as dd/MM/yyyy not the default.
MORE INFO: my viewmodel is like this
[DisplayName("date of birth")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime? Birth { get; set; }
in view I use @Html.DisplayFor(m=>m.Birth)
but this works as expected (I see the formatting)
and to input the date I use @Html.EditorFor(m=>m.Birth)
but if I try and input something like 13/12/2000 is fails with the error that it is not a valid date (12/13/2000 and 2000/12/13 are working as expected but I need dd/MM/yyyy).
The custom modelbinder is called in application_start() b/c I don't know where else.
Using <globalization/>
I have tried with culture="ro-RO", uiCulture="ro"
and other cultures that would give me dd/MM/yyyy.
I have also tried to set it on a per thread basis in application_start() (there are a lot of examples here, on how to do this)
For all that will read this question: It seems that Darin Dimitrov's answer will work as long as I don't have client validation. Another approach is to use custom validation including client side validation. I'm glad I found this out before recreating the entire application.
Application_Start
but this is executed only once, when your application starts. What about subsequent requests? How are you setting the culture for them? – Outmost