通过MVC中的数据注释进行自定义时间验证

时间:2015-05-04 22:09:25

标签: asp.net-mvc validation

我正在尝试在我的MVC应用程序中实现自定义验证。我的方案是

如果选中已关闭复选框,则不需要开始和结束时间。

如果未选中已关闭复选框,我希望用户从下拉列表中选择开始和结束时间。

如果用户选择开始和结束时间,我想验证结束时间应该大于开始时间。

我写了一个自定义验证类,如下所示。我该如何验证?

 public class DatesValidation : ValidationAttribute
{
    public bool Closed { get; set; }

    public string Start { get; set; }

    public string End { get; set; }

    public DatesValidation(bool closed, string startTime, string endTime)
    {
        this.Closed = closed;
        this.Start = startTime;
        this.End = endTime;
    }
}

1 个答案:

答案 0 :(得分:0)

您可以通过模型验证属性实现此目的。您可以使用属性来验证整个模型

自定义属性

public class StartEndDateValidation : ValidationAttribute
{
    public StartEndDateValidation()
    {
        ErrorMessage = "";
    }

    public override bool IsValid(object value)
    {
        DatesValidation app = value as DatesValidation;
        if (app.Closed)
        {
            if (string.IsNullOrEmpty(app.Start) || string.IsNullOrEmpty(app.End))
            {
                ErrorMessage = "Enter both start and end date";
                return false;
            }
        }
        return true;
    }
}

<强>模型

[StartEndDateValidation]
public class DatesValidation
{
    public bool Closed { get; set; }
    public string Start { get; set; }
    public string End { get; set; }
}