使用 FluentValidation 來檢查物件裡的資料
有時在 ASP.NET 裡要驗證資料,通常都是寫很多的判斷式,但這樣有可讀性降低及不好維護的缺點,最近發現 FluentValidation 是一個還不錯的解決方案。
以下示範如何使用 FluentValidation,首先定義一個 member 類別:
public class Member
{
public string ID { get; set; } = string.Empty;
public string Account { get; set; } = string.Empty;
public string NickName { get; set; } = string.Empty;
}
接下來定義一個 Validator:
public class MemberValidator : AbstractValidator<Member>
{
public MemberValidator()
{
}
}
接下來加上驗證邏輯,最簡單的方式如下:
public MemberValidator()
{
RuleFor(member => member.Account).NotNull().NotEmpty();
}
當然這是內建的方法,也可以自行定義:
public MemberValidator()
{
RuleFor(member => member.Account).NotNull().NotEmpty();
RuleFor(member => member.NickName).Must(CheckNickName).WithMessage("Please specify a valid NickName");
}
private bool CheckNickName(string nickName)
{
if (string.IsNullOrEmpty(nickName))
{
return false;
}
return true;
}
定義之後,使用方式如下:
var validator = new MemberValidator();
Member member = new Member
{
Account = string.Empty,
NickName = "Peter Liang",
ID = Guid.NewGuid().ToString(),
};
var result = validator.Validate(member);
Console.WriteLine(result.IsValid);
foreach (var error in result.Errors)
{
Console.WriteLine(error.ErrorMessage);
}
參考資料