MVC3 DateTime属性的默认值

时间:2011-10-25 15:19:04

标签: asp.net-mvc-3 datetime default

我的某个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; }

有什么想法吗?

4 个答案:

答案 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它将具有相同的效果。