我的某个Model类上有一个DateTime属性,并希望将其默认值设置为Now。下面的代码是我希望可以工作但不会编译的代码。它不喜欢System.DateTime.Now调用:
[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; }
有什么想法吗?
答案 0 :(得分:12)
在模型类中:
private DateTime _date = DateTime.Now;
public DateTime Date
{
get { return _date; }
set { _date = value; }
}
答案 1 :(得分:10)
在C#6或更高版本中,您可以将默认值设置为自动属性。
public DateTime Date { get; set; } = DateTime.Now;
这在逻辑上与下面的代码相同,对于旧版本的C#使用它,只是更短的编写方式。
private DateTime _date = DateTime.Now;
public DateTime Date
{
get { return _date; }
set { _date = value; }
}
以上两种方式将始终返回当前日期&时间。它将设置构造对象的时间,并始终返回该时间。要始终返回当前的最新日期和时间时间使用get属性。
public DateTime Date
{
get { return DateTime.Now; }
}
答案 2 :(得分:2)
ctor()
{
DateTo = DateTime.Now;
}
但要注意,当返回期望您的对象为模型的View()
时。您应该始终传递像View(new MyObject())
这样的objcet,否则将不会调用构造函数,并且您将不会在DateTo
上获得默认值。
您的代码无法编译,因为Attributes需要编译时常量作为参数。 DateTime.Now
不是常量,因此编译器符合。
答案 3 :(得分:1)
您无法将DefaultValue设置为DateTime.Now,因为DateTime.Now是一个方法,我建议您更改默认构造函数以设置DateTo = DateTime.Now它将具有相同的效果。