ASP.NET日期范围约束/验证

时间:2019-02-08 09:43:10

标签: asp.net-mvc validation

如果我有一个模型来跟踪员工的假期请求,那么我将如何确保员工在同一日期范围内不休多个假期?是否可以通过验证或在SQL Server中创建约束来处理?我首先将数据库用于该项目。

 public partial class HolidayRequestForm
{
    public int RequestID { get; set; }
    public int EmployeeID { get; set; }

    [DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
    public System.DateTime StartDate { get; set; }

      [DisplayFormat(DataFormatString = "{0:dd/MM/yy}", ApplyFormatInEditMode = true)]
    public System.DateTime FinishDate { get; set; }

    [Range(0.0001, int.MaxValue, ErrorMessage = "Hours Requested must be greater than zero. ")]
    public decimal HoursTaken { get; set; }
    public string Comments { get; set; }
    public int YearCreated { get; set; }
    public int MonthCreated { get; set; }
    public int DayCreated { get; set; }
    public Nullable<int> YearOfHoliday { get; set; }


    [UIHint("Boolean.cshtml")]
    public Nullable<bool> Approved { get; set; }
    public string SubmittedBy { get; set; }
    public string ApprovedBy { get; set; }

    public virtual Employee Employee { get; set; }
}

理想情况下,我希望两名员工可以请求相同的日期范围,但是一个员工不能在同一日期范围内请求两个假期。我可以使用自定义验证属性吗?

1 个答案:

答案 0 :(得分:0)

给定的方案是一种业务逻辑,因此最好在代码本身中实现它,而不要使用数据库约束或触发器。

您可以为此创建自定义validator并在业务层中进行验证。这种方法将易于维护/升级。

使用常规方法进行验证,或通过继承ValidationAttribute并重写IsValid方法来创建自定义ValidationAttribute。