如果出生日期超過了當前年份,如何使用 C# 中的 fluent Validation 來驗證出生日期?
若要為特定屬性指定驗證規則,請呼叫 RuleFor 方法,傳遞指示要驗證的屬性的 lambda 表示式
RuleFor(p => p.DateOfBirth)
若要執行驗證器,請例項化驗證器物件並呼叫 Validate 方法,傳遞要驗證的物件。
ValidationResult results = validator.Validate(person);
Validate 方法返回 ValidationResult 物件。其中包含兩個屬性
IsValid - 一個布林值,表示驗證是否成功。
Errors - 一個包含有關任何驗證失敗的詳細資訊的 ValidationFailure 物件集合
示例 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;
}
}輸出
Invalid Date Of Birth
廣告
Data Structure
Networking
RDBMS
Operating System
Java
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP