作为我在工作中学习新技能目标的一部分,我正在尝试在 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
}
我真的很感激对此的任何指示或示例,或者我可能试图过于理想而这不能在模型中完成?