我在asp.net mvc解决方案中使用Durandal模板。这里的问题与Breeze有关,Breeze也用于Durandal。假设我的模型中有以下实体:
public class Driver
{
[Key]
public int Id { get; set; }
[Required]
public string Firstname { get; set; }
[Required]
public string Lastname { get; set; }
public string Comment { get; set; }
public int? CreatedById { get; set; }
public DateTime? CreatedTime { get; set; }
public int? UpdatedById { get; set; }
public DateTime? UpdatedTime { get; set; }
public virtual User CreatedBy { get; set; }
public virtual User UpdatedBy { get; set; }
}
如您所见,我有一些属性用于跟踪时间和用户ID的创建/更新(UpdatedById,UpdatedTime,...)。我想让用户在一些数据输入页面中编辑/创建我的驱动程序,然后在BeforeSaveEntity
方法中自动填写这些属性(UpdatedById,UpdatedTime,...)。
它有效,但正如您所说,我必须允许int?
或DateTime?
等属性可以为空,因为如果添加新实体(一切都是空白的),如果我没有,则验证失败像这样前进。
我的问题:是否有其他解决方案可以做些什么来避免在我的模型上使用可空类型(int?
- DateTime?
)来跟踪我的这些属性创建/编辑?
感谢。
答案 0 :(得分:0)
使它们不可为空,并在每个类型的“已注册”ctor中填写客户端的“虚拟”值,然后在服务器上覆盖它们。