Computer >> Máy Tính >  >> Lập trình >> C#

Làm thế nào để xác thực DateofBirth bằng cách sử dụng Xác thực thông thạo trong C # nếu nó vượt quá năm hiện tại?

Để chỉ định quy tắc xác thực cho một thuộc tính cụ thể, hãy gọi phương thức RuleFor, truyền một biểu thức lambda cho biết thuộc tính mà bạn muốn xác thực

RuleFor (p => p.DateOfBirth)

Để chạy trình xác thực, hãy khởi tạo đối tượng trình xác thực và gọi phương thức Xác thực, truyền vào đối tượng để xác thực.

ValidationResult results =validator.Validate (person);

Phương thức Validate trả về một đối tượng ValidationResult. Điều này chứa hai thuộc tính

IsValid - một boolean cho biết việc xác thực có thành công hay không.

Lỗi - một tập hợp các đối tượng ValidationFailure chứa thông tin chi tiết về bất kỳ lỗi xác thực nào

Ví dụ 1

static void Main(string[] args) {
   List errors = new List();

   PersonModel person = new PersonModel();
   person.FirstName = "TestUser";
   person.LastName = "TestUser";
   person.AccountBalance = 100;
   person.DateOfBirth = DateTime.Now.Date.AddYears(1);

   PersonValidator validator = new PersonValidator();

   ValidationResult results = validator.Validate(person);

   if (results.IsValid == false) {
      foreach (ValidationFailure failure in results.Errors){
         errors.Add(failure.ErrorMessage);
      }
   }

   foreach (var item in errors){
      Console.WriteLine(item);
   }
   Console.ReadLine();

   }
}

public class PersonModel {
   public string FirstName { get; set; }
   public string LastName { get; set; }
   public decimal AccountBalance { get; set; }
   public DateTime DateOfBirth { get; set; }
}

public class PersonValidator : AbstractValidator{
   public PersonValidator(){
      RuleFor(p => p.DateOfBirth)
      .Must(BeAValidAge).WithMessage("Invalid {PropertyName}");
   }

   protected bool BeAValidAge(DateTime date){
      int currentYear = DateTime.Now.Year;
      int dobYear = date.Year;

      if (dobYear <= currentYear && dobYear > (currentYear - 120)){
         return true;
      }

      return false;
   }
}

Đầu ra

Invalid Date Of Birth