我在MVC3中有2个包含POCO实体的类
public class TeamMember
{
public DateTime JoinDate { get; set; }
[Required]
Public string Name{ get; set; }
}
public class Project
{
[Required]
public string Name { get; set; }
public DateTime StartDate { get; set; }
}
我想使用项目JoinDate
设置团队成员StartDate
的默认值。
任何人都可以把我拉出来吗
答案 0 :(得分:2)
您可以在控制器中执行此操作,例如:
if(teamMember.JoinDate == null)
{
teamMember.JoinDate = project.StartDate;
}
如果project.StartDate == null
然后project.StartDate = DateTime.Now
,您可以添加更多逻辑。
我不确定你是否可以在模型中将其作为默认设置。
<强>更新强>
如果你有,我认为Project StartDate
可以看到TeamMember JoinDate
,我想你需要给他们一对一的关系。我不确定确切的语法,因为我不在我的工作系统上,但这样的事情应该有效:
public class TeamMember
{
public DateTime JoinDate
{
get { return this.JoinDate; }
set { JoinDate = this.Project.StartDate; }
}
[Required]
public string Name{ get; set; }
public virtual Project Project { get; set; }
}
public class Project
{
[Required]
public string Name { get; set; }
public DateTime StartDate { get; set; }
}
更新2
考虑到这一点,你需要允许JoinDate为null,否则它会抛出验证错误,然后你需要检查它是否有值。更像是这样:
public class TeamMember
{
public DateTime? JoinDate
{
get { return this.JoinDate; }
set
{
if(JoinDate == null)
{
JoinDate = this.Project.StartDate;
}
else
{
JoinDate = JoinDate;
}
}
}
[Required]
public string Name{ get; set; }
public virtual Project Project { get; set; }
}
答案 1 :(得分:0)
听起来你需要TeamMember类的自定义模型绑定器。当然,这假设您在创建TeamMember时可以访问project.StartDate。
答案 2 :(得分:0)
我已将[DefaultValue()]用于bool,int,字符串数据类型。尝试使用DateTime,我不确定,但只是给你解决方法。