1

作为我在工作中学习新技能目标的一部分,我正在尝试在 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
}

我真的很感激对此的任何指示或示例,或者我可能试图过于理想而这不能在模型中完成?

4

1 回答 1

0

您似乎在 HolidayRequest 对象中缺少对请求假期的人的引用。我本来希望在 HolidayRequest 对象中看到 Person 或 PersonId。在那里,您可以计算 Duration 和 RemainingHoliday 之间的差异。

于 2011-12-08T18:29:56.273 回答