MVC3 Значение по умолчанию для свойства DateTime - PullRequest
2 голосов
/ 25 октября 2011

У меня есть свойство DateTime в одном из моих классов Model, и я хочу установить для него значение по умолчанию 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 ]

12 голосов
/ 25 октября 2011

В модельном классе:

private DateTime _date = DateTime.Now;
public DateTime Date 
{
  get { return _date; }
  set { _date = value; }
}
10 голосов
/ 31 июля 2015

В 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 голосов
/ 25 октября 2011
ctor()
{
   DateTo = DateTime.Now;
}

Но будьте осторожны, когда возвращаете View(), который ожидает ваш объект как модель.Вы всегда должны передавать объект как View(new MyObject()), иначе конструктор не будет вызван, и вы не получите значение по умолчанию для DateTo.

Ваш код не компилируется, потому что атрибуты нуждаются в константах времени компиляции, так какпараметры.DateTime.Now не является константой, поэтому компилятор соответствует.

1 голос
/ 25 октября 2011

Вы не можете установить DefaultValue на DateTime.Now, потому что DateTime.Now - метод, я предлагаю вам изменить конструктор по умолчанию, чтобы установить DateTo = DateTime.Now, он будет иметь тот же эффект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...