Атрибут проверки подтверждается, но не показывает сообщение об ошибке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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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