Reputation: 647
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?
Upvotes: 20
Views: 35558
Reputation: 317
If you are using MVC, perhaps you can try this on your client side script:
@{
string birthDateOnly = Model.DateOfBirth.Date.ToShortDateString();
}
@Html.DisplayTextFor(m => birthDateOnly)
Upvotes: 1
Reputation: 1
using @Value and ToShortDateString() you can display only date.
@Html.TextBoxFor(model => model.StartDate, "", new { id = "date", @class = "datepicker", @style = "width:70%; height:30px;", @placeholder = "Enter Date", @Value = @Model.StartDate.ToShortDateString()})
Upvotes: 0
Reputation: 29
If your date is of type DateTime, and ToShortDateString()
or ToLongDateString()
still doesn't work, check if your DateTime is nullable (DateTime?). Making it not nullable can do the trick.
Upvotes: 2
Reputation: 131
You can use ToShortDateString() or ToLongDateString() to display date only,example:
@Model.EventDate.ToShortDateString()
@Model.EventDate.ToLongDateString()
Upvotes: 6
Reputation: 93424
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.
Upvotes: 18
Reputation: 39491
Use DisplayFormatAttribute to indicate format when value is displayed. Also, you could create two DisplayTemplates, Date and DateTime, and use UIHintAttribute to specify template
Upvotes: 5
Reputation: 20674
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}")]
Upvotes: 12