Asp.net mvc 3 MVC3中的默认属性值

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;

我在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; set; }
}
我想用Project
StartDate
设置TeamMember
JoinDate
的默认值。
有人能把我从这个

中拉出来吗你可以在控制器中这样做,比如:

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如果你看到我的更新,你可能需要玩一下。