When I use the following code in my edit view, it doesn't show the date from the model.
<input asp-for="OprettetDato" class="form-control"/>
the property of the model is declared like this:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0: dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime OprettetDato { get; set; }
and the value is passed over in the model
Why isn't this working?
The <input type="date"> defines a date picker. The resulting value includes the year, month, and day.
Here is the solution to my problem
https://forums.asp.net/t/2167833.aspx?Date+control+is+not+showing+value+from+model
[DisplayFormat(ApplyFormatInEditMode = false, DataFormatString = "{0:dd/MM/yyyy}")]
ApplyFormatInEditMode = false
The problem is that attribute [DataType(DataType.Date)]
on your model property makes the input tag helper produce type="date"
HTML attribute, which in HTML5 causes fixed, standard format - see information here: Is there any way to change input type="date" format?
In order to display the field with proper format, remove [DataType(DataType.Date)]
attribute and you will be fine.
Additionaly, in order to have forward slashes in date format, you need to escape them like this:
[DisplayFormat(DataFormatString = @"{0:dd\/MM\/yyyy}", ApplyFormatInEditMode = true)]
public DateTime OprettetDato { get; set; }
If you want to have custom date format with datepicker, you need to use some custom JavaScript solution.
Update:
Later versions of tag helpers default to the input date type if the model property is a DateTime object. To allow a custom date format ensure that the html input type is text by adding [DataType(DataType.Text)]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With