如何将服务注入到我的自定义验证属性中?如果这不可能,那么另一种选择是设置ValidationContext
来解析我的测试中的服务。
我该如何实现这些目标?
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var dateOfBirth = (DateTime)value;
var currentDate = DateTime.UtcNow;
var minimumAge = new DateTime(currentDate.Year - 17, currentDate.Month, currentDate.Day, currentDate.Hour, currentDate.Minute, currentDate.Second);
var maximumAge = new DateTime(currentDate.Year - 34, currentDate.Month, currentDate.Day, currentDate.Hour, currentDate.Minute, currentDate.Second);
var isTooYoung = dateOfBirth > minimumAge;
var isTooOld = dateOfBirth < maximumAge;
if (isTooYoung || isTooOld)
{
// it is about this line
var localizer = (ILocalizer)validationContext.GetService(typeof(ILocalizer));
var error = localizer.GetString(ErrorMessageString);
return new ValidationResult(error);
}
return ValidationResult.Success;
}
谢谢你的帮助。
您可以参考这篇文章,它告诉您如何注入服务&将数据转换为验证属性:
https://rossjayjones.github.io/dotnetcore/aspnetcore/mvc/dotnet/2018/09/09/injecting-services-into-validation-attributes-aspnetcore.html