I have a DateTime property on one of my Model classes and want to set it's default vaule to Now. The below code is what I had hoped would work but won't compile. It doesn't like the System.DateTime.Now call:
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
[Display(Name = "To Date")]
[Required(ErrorMessage = "To Date is required.")]
[DefaultValue(System.DateTime.Now)]
public DateTime DateTo { get; set; }
Any ideas?
But beware, when returning
View()
that expects your object as model. You should always pass the objcet likeView(new MyObject())
, otherwise constructor won't be invoked and you won't get default value onDateTo
.Your code does not compile because Attributes need compile-time constants as parameters.
DateTime.Now
is not constant, so compiler complies.In the model class:
In C# 6 or higher you can set a default value to an auto property.
This is logically the same as the below code, use this for older version of C#, just shorter way of writing.
The above two ways will always return the current date & time. It will set the time when the object is constructed and always return that time there after. To always return the current latest date & time use a get property.
You are not able to set DefaultValue to DateTime.Now because DateTime.Now is a method, I suggest you change the default constructor to set DateTo = DateTime.Now it will have the same effect.