I have my model field decorated in the following way:
[DataType(DataType.Date)]
[Display(Name = "Date of birth")]
public string DateOfBirth { get; set; }
When I want to display the value in the view using the following code:
<%: Html.DisplayFor(m => m.DateOfBirth) %>
The problem is that the date is displayed together with its time value. I wonder why it does not take DateType attribute into consideration and displays only the date value without time. I know that I may create a display template for DateTime but in other cases than date of birth I want to show time together with date. How to solve the problem?
The problem you have here is that you are using a string value rather than a DateTime.
change your model to be:
[DataType(DataType.Date)]
[Display(Name = "Date of birth")]
public DateTime? DateOfBirth { get; set; }
DataType will only work if it's a DateTime type, you also get the added advantage that it will automatically validate it as a valid date when using a DateTime. If you use string, you will have to use a regular expression validator to ensure a proper date has been entered.
This should do it for edit mode and display
[DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:MM/dd/yyyy}")]
though if it is just display, this might work
[DisplayFormat(DataFormatString = "{0:d}")]
Use DisplayFormatAttribute to indicate format when value is displayed. Also, you could create two DisplayTemplates, Date and DateTime, and use UIHintAttribute to specify template
You can use ToShortDateString() or ToLongDateString() to display date only,example:
@Model.EventDate.ToShortDateString()
@Model.EventDate.ToLongDateString()
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