C# 将当前日期指定给MVC中的属性

C# 将当前日期指定给MVC中的属性,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我正在为用户创建一个模型,我希望该属性已设置为Now()。这是我的密码: [DefaultValue(DateTime.Now)] public DateTime joined {get; set;} 我得到一个错误: 属性参数必须是常量表达式、typeof表达式或属性参数类型的数组创建表达式 我做错了什么?做我想做的事情最好的方法是什么?你可以在模型课上试试这个: private DateTime _joined = DateTime.Now; public DateTime Joined

我正在为用户创建一个模型,我希望该属性已设置为Now()。这是我的密码:

[DefaultValue(DateTime.Now)]
public DateTime joined {get; set;}
我得到一个错误:

属性参数必须是常量表达式、typeof表达式或属性参数类型的数组创建表达式


我做错了什么?做我想做的事情最好的方法是什么?

你可以在模型课上试试这个:

private DateTime _joined = DateTime.Now;
public DateTime Joined 
{
  get { return _joined; }
  set { _joined = value; }
}

您可以在模型类中尝试以下操作:

private DateTime _joined = DateTime.Now;
public DateTime Joined 
{
  get { return _joined; }
  set { _joined = value; }
}

DateTime.Now
不是一个常量,而是一个在运行时计算的属性,这就是为什么您不能执行建议的操作

您可以通过以下两种方式来实现您的建议:

public class MyClass {
  public DateTime joined { get; set; }
  public MyClass() {
    joined = DateTime.Now;
  }
}
或:


DateTime.Now
不是一个常量,而是一个在运行时计算的属性,这就是为什么您不能执行建议的操作

您可以通过以下两种方式来实现您的建议:

public class MyClass {
  public DateTime joined { get; set; }
  public MyClass() {
    joined = DateTime.Now;
  }
}
或:


不能将表达式设置为默认值属性。因为数据注释不是运行时属性。您应该这样设置默认值

private DateTime _joined = DateTime.Now;
public DateTime Joined 
{
  get { 
      return _joined; 
  }
  set { 
      _joined = value; 
  }
}

不能将表达式设置为默认值属性。因为数据注释不是运行时属性。您应该这样设置默认值

private DateTime _joined = DateTime.Now;
public DateTime Joined 
{
  get { 
      return _joined; 
  }
  set { 
      _joined = value; 
  }
}

您可以按照其他人的建议进行操作,但另一种选择是在从视图模型映射到域之后,在将其添加到数据库之前,在操作方法中设置它(如果您需要这样做):

您的用户域模型:

public class User
{
     // Other properties here

     public DateTime DateJoined { get; set; }
}

我个人会在action方法中设置它,因为日期和时间更接近用户实际添加到数据库的时间(假设这是您想要做的)。假设您在12:00创建用户对象,那么这将是您将用户添加到数据库的时间,但是如果您只在12:30单击提交按钮会怎么样?我更喜欢12:30而不是12:00。

您可以按照其他人的建议进行操作,但另一种选择是在从视图模型映射到域之后,在将其添加到数据库之前,在操作方法中设置它(如果您需要这样做):

您的用户域模型:

public class User
{
     // Other properties here

     public DateTime DateJoined { get; set; }
}

我个人会在action方法中设置它,因为日期和时间更接近用户实际添加到数据库的时间(假设这是您想要做的)。假设您在12:00创建用户对象,那么这将是您将用户添加到数据库的时间,但是如果您只在12:30单击提交按钮会怎么样?我更喜欢12:30而不是12:00。

我同意这是更好的解决方案,用户可以打开视图并设置日期时间,但如果他们根据您的缓存策略长时间保留该视图,则可能会不一致。我个人使用一个基类DTO,所有DTO都从该基类派生,包括CreatedBy、CreatedDate、LastUpdateBy、LastUpdateDate属性。这些在持久化到DBI之前设置好。我同意这是更好的解决方案,用户可以打开一个视图并设置日期时间,但是如果用户根据缓存策略长时间保留该视图,则可能会不一致。我个人使用一个基类DTO,所有DTO都从该基类派生,包括CreatedBy、CreatedDate、LastUpdateBy、LastUpdateDate属性。在将其持久化到数据库之前,将对其进行设置