Appropriate way to set default values ​​for ViewModel in MVC4?

I have a viewModel that contains the following:

public class CreateCardViewModel
    {
        [HiddenInput(DisplayValue = false)]
        public int SetId { get; set; }

        [Required]
        public IList<Side> Sides { get; set; }

        [Required]
        public int Stage { get; set; }

        [Required]
        [DataType(DataType.Date)]
        [HiddenInput(DisplayValue = false)]
        public DateTime DateCreated { get; set; }

        [Required]
        public bool IsReady { get; set; }

    }

The model is as follows:

public class Card
    {

        public virtual int CardId { get; set; }

        // belongs to a Set
        public virtual int SetId { get; set; }
        public virtual Set Set { get; set; }

        // has Sides
        public virtual IList<Side> Sides { get; set; }

        // is in a certain Stage
        public virtual int Stage { get; set; }

        // is ready to study
        public virtual bool IsReady { get; set; }

        public virtual DateTime DateCreated { get; set; }

    }

How to set default value for DateCreated?

Will the method be changed if I want to insert an empty side to side when creating a map?

+5
source share
2 answers

You can set default values ​​in the constructor:

public CreateCardViewModel()
{
    DateCreated = DateTime.Now;
    Sides = new List<Side> { new Side() };
}

. DateTime.Now . ViewModel , ​​ , , . SystemTime, . , DateTime.Now:

public static class SystemTime
{
    public static Func<DateTime> Now = () => DateTime.Now;
}

:

public CreateCardViewModel()
{
    DateCreated = SystemTime.Now();
    Sides = new List<Side> { new Side() };
}

, :

SystemTime.Now = () => new DateTime(2013, 2, 11, 17, 41, 12);
+8

SystemTime.

CreateDate , , . ( , )

, :

public interface ITimeStamped
{
    DateTime DateCreated { get; set; }
}

Commit int Context - , , :

foreach (var entry in ChangeTracker.Entries<ITimeStamped>()
                .Where(entry => entry.State == EntityState.Added))
            {
                entry.Entity.DateCreated = SystemTime.Now();
            }

, , DateTime, .

+2

All Articles