6

Following viewmodel used in a view is supposed to display a StartDate as, say 9/30/2015. But it is displaying as 9/30/2015 12:00:00 AM. How can I make it display without time while using DataAnnotaion? I know I can use @Model.StartDate.ToString("MM/dd/yyy") inside view to display date only. But that would mean you have to do it in every view that is using the following ViewModel:

ViewModel:

...
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime StartDate { get; set; }
...

UPDATE

The corresponding model class of the above ViewModel already has the following DataAnnotation that correctly creates the data type in SQL Server table as Date; and when you run a query on the corresponding table in SSMS it correctly displays the StartDate column's data with dates only, say, 9/30/2015 etc.)

Model

...
[DataType(DataType.Date)]
public DateTime StartDate { get; set; }
...

StartDate in the sql db is in fact Date only. Moreover, if I run a query on SSMS it correctly returns date only.

8
  • Have you tried just using the [DataType(DataType.Date)] attribute? Commented Jul 28, 2017 at 17:05
  • @ErikFunkenbusch To answer your question, I've added an UPDATE section to my post. Moreover, I did try your suggestion on the ViewModel as well but to no avail. Commented Jul 28, 2017 at 18:09
  • 1
    Using the DataType attribute should work if your rendering with EditorFor or DisplayFor. Commented Jul 28, 2017 at 18:34
  • FYI, here's a fiddle that demonstrates dotnetfiddle.net/urdrHM Commented Jul 28, 2017 at 19:02
  • @ErikFunkenbusch In my view I'm using @Model.StartDate. Per your suggestion I should be using DisplayFor instead - correct? Commented Jul 28, 2017 at 19:26

1 Answer 1

11

There are two solutions to your problem. As per your comments, you are currently using @Model.StartDate to display a date.

You can either do this:

@Model.StartDate.ToString("d")

Or, you can use a model based approach in your ViewModel and do this:

[DataType(DataType.Date)]
public DateTime StartDate {get;set;}

Then, in your view use:

@Html.DisplayFor(m => m.StartDate)
Sign up to request clarification or add additional context in comments.

1 Comment

Last comment that you added in our chat room may answer my this. If you like you can write a response there and I'll mark that as an answer.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.