jainmayank08 Ответов: 3

dataannotation в целое имущество на максимальную длину.


привет друзья,

Предположим, у меня есть свойство целочисленного типа, и я использую dataannotation в mvc для проверки.


//[MaxLengthSize(10)] Вот так я хочу создать пользовательский файл.
Public Int Value {get; set;}

У меня есть текстовое поле, когда оно принимает больше 10 значений, например "11111111111", то возвращает ошибку

Значение '11111111111' недопустимо.

Который является стандартным. Причиной является свойство типа int максимальное значение превышает так, это сообщение об ошибке по умолчанию.
Я также создал пользовательский валидатор, но он не работает.

Мне нужно создать для того, чтобы показать свою правильную валидацию.

Я могу использовать валидации jquery,работая, но мне нужно делать только с серверной стороной dataannotation.

пожалуйста, помогите мне с решением.

3 Ответов

Рейтинг:
2

thatraja

Воспользуйся Range вместо MaxLength

[Range(1,1000000000,ErrorMessage="Value must be between 1 to 1000000000")]


Faisalabadians

+5 за точный ответ

Рейтинг:
2

jainmayank08

На самом деле проблема в том, что int имеет максимальную длину 2147483647, что на 10 цифр больше, и если я попытаюсь передать больше, чем это, то верну сообщение и не проверю длину.
Верните предопределенное сообщение, но не то пользовательское сообщение, которое нам нужно.


Рейтинг:
1

MAbubakar.Riaz

Я использую эту пользовательскую аннотацию данных, вы можете удалить minvalue, если хотите

public sealed class FieldLengthAttribute : ValidationAttribute
    {
        private int _minValue { get; set; }
        private int _maxValue { get; set; }
        public FieldLengthAttribute(int minValue,int maxValue) {

            _minValue = minValue;
            _maxValue = maxValue;

            ErrorMessage = "{0} length should be between {1} and {2}";
        }

        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            
            if (value != null)
            {
                int objectLength = Convert.ToString(value).Length;
                if (objectLength < _minValue || objectLength > _maxValue)
                {
                    return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
                }
            }
            return ValidationResult.Success;
        }

        public override string FormatErrorMessage(string name)
        {
            return String.Format(CultureInfo.CurrentCulture,
              ErrorMessageString, name,_minValue,_maxValue);
        }

    }


CHill60

Этому вопросу уже более 4 лет, и на него уже дан ответ. Если вы считаете, что у вас есть полезный фрагмент кода, который кто-то другой может захотеть использовать, опубликуйте его в качестве подсказки. Не воскрешайте старые посты - Как видите, участники будут понижать ваш голос