Age的自定义验证必须大于或等于18

时间:2013-09-25 20:28:37

标签: asp.net-mvc-4 razor customvalidator model-validation

我想对Age大于或等于18的日期进行自定义验证。

mvc4的任何一个想法都可以使用自定义验证吗?

如果有任何解决方案,请告诉我。

此致

1 个答案:

答案 0 :(得分:1)

只需使用Range验证码:

[Range(18, int.MaxValue)]
public int Age { get; set; }

它在System.ComponentModel.DataAnnotations命名空间中可用。

<强>更新

为了验证日期至少是18年前,您可以使用如下自定义验证属性:

public class Over18Attribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        string message = String.Format("The {0} field is invalid.", validationContext.DisplayName ?? validationContext.MemberName);

        if (value == null)
            return new ValidationResult(message);

        DateTime date;
        try { date = Convert.ToDateTime(value); }
        catch (InvalidCastException e) { return new ValidationResult(message); }

        if (DateTime.Today.AddYears(-18) >= date)
            return ValidationResult.Success;
        else
            return new ValidationResult("You must be 18 years or older.");
    }
}