Reputation: 18859
I have this attribute in my view model:
[DataType(DataType.DateTime)]
public DateTime? StartDate { get; set; }
If I want to display the date, or populate a textbox with the date, I have these:
<%: Model.StartDate %>
<%: Html.TextBoxFor(m => m.StartDate) %>
Whenever the date is displayed, it's displayed like: 01/01/2011 12:00:00 AM
But I'd like to only display 01/01/2011
Is there a way to apply a display format with data annotations? I don't want to have to go to every instance where I display a date, and add some code to format it.
Upvotes: 115
Views: 294819
Reputation: 71
This is my favourite way to do that with anotations in your model:
[DisplayFormat(DataFormatString = "{0:dd/MM/yyy}")]
Upvotes: 2
Reputation: 1374
That works for me
[DataType(DataType.DateTime)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
Upvotes: 7
Reputation: 259
If your data field is already a DateTime datatype, you don't need to use [DataType(DataType.Date)]
for the annotation; just use:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
on the jQuery, use datepicker for you calendar
$(document).ready(function () {
$('#StartDate').datepicker();
});
on your HTML, use EditorFor
helper:
@Html.EditorFor(model => model.StartDate)
Upvotes: 23
Reputation: 1574
Use this, but it's a complete solution:
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
Upvotes: 13
Reputation:
set your property using below code at the time of model creation i think your problem will be solved..and the time are not appear in database.you dont need to add any annotation.
private DateTime? dob;
public DateTime? DOB
{
get
{
if (dob != null)
{
return dob.Value.Date;
}
else
{
return null;
}
}
set { dob = value; }
}
Upvotes: 0
Reputation: 1888
After Commenting
// [DataType(DataType.DateTime)]
Use the Data Annotation Attribute:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
STEP-7 of the following link may help you...
http://ilyasmamunbd.blogspot.com/2014/12/jquery-datepicker-in-aspnet-mvc-5.html
Upvotes: 5
Reputation: 5813
In mvc 4 you can easily do it like following using TextBoxFor
..
@Html.TextBoxFor(m => m.StartDate, "{0:MM/dd/yyyy}", new { @class = "form-control default-date-picker" })
So, you don't need to use any data annotation in model or view model class
Upvotes: 27
Reputation: 4186
Apply DataAnnotation like:
[DisplayFormat(DataFormatString = "{0:MMM dd, yyyy}")]
Upvotes: 19
Reputation: 10753
Try tagging it with:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
Upvotes: 170