XlsxFile : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value is IFormFile file)
{
if (!TryOpenXlsx(file.OpenReadStream()))
{
return new ValidationResult(...);
}
return ValidationResult.Success;
}
else
{
throw new ArgumentException(...);
}
}
}
Сейчас по-сути надо еще на value != null добавить проверку, но это по-сути работа аттрибута Required. Как вернуть управление из метода IsValid, чтобы дальше пошла проверка по Required? Это можно сделать через return ValidationResult.Success на value == null, но выглядит неочень.
инвертни иф
Там их порядок можно менять. Есть же свойство Order. Если у тебя твой атрибут валидации не прошёл - то возвращай ошибку, но не суццесс. Просто надо наконфигать всё таким образом, чтобы Required раньше отрабатывал.
Обсуждают сегодня