Атрибут проверки подтверждается, но не показывает сообщение об ошибкеC#

Место общения программистов C#
Anonymous
Атрибут проверки подтверждается, но не показывает сообщение об ошибке

Сообщение Anonymous »

Я создал пользовательский атрибут проверки: < /p>

Код: Выделить всё

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class MinByteLengthAttribute(string lengthPropertyName) : ValidationAttribute
{
public override bool RequiresValidationContext => true;

protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var lengthProperty = validationContext.ObjectType.GetProperty(lengthPropertyName, BindingFlags.Instance | BindingFlags.Public) ?? throw new ArgumentException($"Property '{lengthPropertyName}' not found on type '{validationContext.ObjectType.Name}'.");
var minLength = (int)lengthProperty.GetValue(validationContext.ObjectInstance);

if (value is not byte[] bytes || bytes.Length < minLength)
{
var errorMessage = FormatErrorMessage(validationContext.DisplayName);
return new ValidationResult(errorMessage);
}

return ValidationResult.Success;
}
}
< /code>
и украсить свойство с ним: < /p>
public int ImageMinSize { get; set; } = 10000;

[Required(ErrorMessageResourceType = typeof(Validation), ErrorMessageResourceName = "ImageRequired")]
[MinByteLength(nameof(ImageMinSize), ErrorMessageResourceType = typeof(Validation), ErrorMessageResourceName = "ImageTooSmall")]
public byte[] Image { get; set; }
Проверка работает нормально в Editform . В целях тестирования я добавил: < /p>

Код: Выделить всё

< /code>
и как стандарт, у меня есть: < /p>

Тем не менее, валидационное сообщение для minbytelength отображается только в резюме, а не под полем изображения. Сообщение о валидации для «требуемого» показано в обоих местах.
Я что -то упускаю?

Подробнее здесь: https://stackoverflow.com/questions/797 ... or-message

Вернуться в «C#»