作为我在工作中学习新技能的目标的一部分,我正在尝试在ASP.NET MVC(MVC 4)中开发员工管理系统。
我正在尝试遵循在模型级别执行所有验证的惯例(不仅因为这是我推荐的内容,而且因为有人谈论可能使用模型部分的桌面应用程序,所以我想要确保在该应用程序中强制执行任何约束!)。
我的问题是,我在Person类(RemainingHoliday)上有一些数据。创建HolidayRequest时,我希望确保请求的天数不会超过此人剩余的天数。
我该怎么做呢?我知道我可以通过扩展ValidationAttribute来创建自己的验证规则,但是我如何从HolidayRequest类到达此类中的Person类?
模型片段:
public class Person
{
public string PersonID { get; set; } // this is populated with Users AD Guid
public string HolidayEntitlement { get; set; }
public virtual ICollection<HolidayRequest> Holidays { get; set; }
public int TotalEntitlement(int year = -1)
{
return this.HolidayEntitlement + this.HolidayAdjustments.Where(a => a.LeaveYear.Year == year).Sum(a => a.Adjustment);
}
public int RemainingHoliday(int year = -1)
{
return this.TotalEntitlement(year) - this.Holidays.Where(h => h.Start.Year == year).Where(h => h.Status != HolidayStatus.Rejected).Sum(h => h.Duration);
}
}
public class HolidayRequest
{
public string HolidayId { get; set; }
public DateTime Start { get; set; }
public DateTime Finish { get; set; }
public int Duration { get; set; } // This cannot be greater than Person.RemainingHoliday
}
我真的很感谢任何指针或样品,或者我想尝试太理想,这不能在模型中完成?
答案 0 :(得分:0)
您似乎错过了对HolidayRequest对象中请求假期的人的引用。我原本希望在HolidayRequest对象中看到Person或PersonId。在那里,你可以计算持续时间和RemainingHoliday之间的差异。