Asp.net mvc 3 MVC3中的默认属性值
我在MVC3中有两个包含POCO实体的类Asp.net mvc 3 MVC3中的默认属性值,asp.net-mvc-3,validation,data-annotations,model-validation,Asp.net Mvc 3,Validation,Data Annotations,Model Validation,我在MVC3中有两个包含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;
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; }
}
我想用ProjectStartDate
设置TeamMemberJoinDate
的默认值。
有人能把我从这个中拉出来吗你可以在控制器中这样做,比如:
if(teamMember.JoinDate == null)
{
teamMember.JoinDate = project.StartDate;
}
如果project.StartDate==null
然后project.StartDate=DateTime.Now
,则可以添加更多逻辑
不过,我不确定您是否可以将此作为模型本身的默认设置
更新
正如您所看到的,我认为项目开始日期
看不到团队成员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; }
}
听起来您需要为TeamMember类定制一个模型绑定器。当然,这假设您在创建团队成员时可以访问project.StartDate。我已经将[DefaultValue()]用于bool、int、string数据类型。试试DateTime,我不确定,但给你一些解决办法。@Misam如果你看到我的更新,你可能需要玩一下。