我为用户创造一个模式,我想这个属性加入设置为NOW()。 这里是我的代码:
[DefaultValue(DateTime.Now)]
public DateTime joined {get; set;}
我得到的错误:
一个属性参数必须是常量表达式,属性参数类型的typeof运算表达式或数组创建表达式。
我究竟做错了什么? 什么是应该做我想要的东西的最佳方式?
我为用户创造一个模式,我想这个属性加入设置为NOW()。 这里是我的代码:
[DefaultValue(DateTime.Now)]
public DateTime joined {get; set;}
我得到的错误:
一个属性参数必须是常量表达式,属性参数类型的typeof运算表达式或数组创建表达式。
我究竟做错了什么? 什么是应该做我想要的东西的最佳方式?
DateTime.Now
不是一个常量,但那是在运行时计算的属性,这就是为什么你不能做你所建议。
你可以做你无论用什么建议:
public class MyClass {
public DateTime joined { get; set; }
public MyClass() {
joined = DateTime.Now;
}
}
要么:
public class MyClass {
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; }
}
你不能设置表达式为默认值属性。 由于dataannotaions非运行时属性。 你应该这样设置的默认值
private DateTime _joined = DateTime.Now;
public DateTime Joined
{
get {
return _joined;
}
set {
_joined = value;
}
}
你可以不喜欢它什么其他的建议,但另一种选择是将其设置成你的操作方法,从视图模型域,只是将它添加到数据库中(如果这是你需要做什么)之前,你的映射后:
[HttpPost]
public ActionResult Create(YourViewModel viewModel)
{
// Check if view model is not null and handle it if it is null
// Do mapping from view model to domain model
User user = ... // Mapping
user.DateJoined = DateTime.Now;
// Do whatever else you need to do
}
对于用户您domail模型:
public class User
{
// Other properties here
public DateTime DateJoined { get; set; }
}
我个人的操作方法已经设置它,因为日期和时间会比较接近,当用户实际上是添加到数据库中(假设这是你想要做什么)来。 让我们说你在12:00创建用户对象,那么这将是当用户添加到数据库中你的时间,但如果你只有点击在12:30提交按钮? 我宁愿喜欢12:30比12:00。