Создайте пользовательский валидатор для даты рождения, чтобы проверить, что пользователь достиг совершеннолетия - PullRequest
0 голосов
/ 21 октября 2019

В моей модели есть следующий фрагмент кода, для которого я хотел бы добавить пользовательский валидатор:

[Required]
[Display(Name = "Date Of Birth")]
[DataType(DataType.Date)]
public DateTime DateOfBirth { get; set; }

Я пытался исследовать, но конкретного ответа нет. Я хотел бы знать правильный синтаксис для создания собственного валидатора для даты

1 Ответ

1 голос
/ 22 октября 2019

1.Создайте класс и извлеките его из класса ValidationAttribute и переопределите в нем метод IsValid, а затем реализуйте логику проверки внутри метода:

public class AgeMajorityValidator : ValidationAttribute  
{  
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)  
    {  
        if (value != null)  
        {  
            DateTime dateOfBirth;
            if (!DateTime.TryParse(value.ToString(), out dateOfBirth))
                return new ValidationResult("" + validationContext.DisplayName + " is not valid date format");

            int age = new DateTime(DateTime.Now.Subtract(dateOfBirth).Ticks).Year - 1;

            if (age > 18)
                return ValidationResult.Success;
            else
                return new ValidationResult("Please Enter a Valid Age.");
        }

        return new ValidationResult("" + validationContext.DisplayName + " is required");
    }

2.Используйте AgeMajorityValidator какатрибут в вашей модели, как показано ниже:

[Display(Name = "Date Of Birth")]
[DataType(DataType.Date)]
[AgeMajorityValidator]
public DateTime DateOfBirth { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...