Fluent Validation
FluentValidation یک کتابخانه برای اعتبارسنجی مدلهاست؛ یعنی بهجای اینکه همه Validationها را با Data Annotation داخل کلاس بنویسی، قوانین را در یک کلاس جدا تعریف میکنی.
پیشنیازها و وابستگیها (Dependencies)
inheritance => AbstractValidator<>// به جای کد زیر
public class ProductCreateViewModel
{
[Required]
[StringLength(100)]
public string Name { get; set; } = null!;
[Range(0, 1000000000)]
public decimal Price { get; set; }
}
// به این صورت مینویسیم
public class ProductCreateViewModelValidator
: AbstractValidator<ProductCreateViewModel>
{
public ProductCreateViewModelValidator()
{
RuleFor(x => x.Name)
.NotEmpty()
.WithMessage("نام محصول الزامی است.")
.MaximumLength(100)
.WithMessage("نام محصول نباید بیشتر از 100 کاراکتر باشد.");
RuleFor(x => x.Price)
.GreaterThanOrEqualTo(0)
.WithMessage("قیمت نمیتواند منفی باشد.");
}
}