У меня есть модель с 4 свойствами, которые имеют тип строки. Я знаю, что вы можете проверить длину отдельного свойства с помощью аннотации StringLength. Однако я хочу проверить длину 4 свойств вместе взятых.
Как с помощью MVC сделать это с аннотацией данных?
Я спрашиваю об этом, потому что я новичок в MVC и хочу сделать это правильно, прежде чем принимать собственное решение.
c#
.net
asp.net-mvc
asp.net-mvc-3
data-annotations
Дэнни ван дер Краан
источник
источник
Ответы:
Вы можете написать собственный атрибут проверки:
а затем у вас может быть модель представления и украсить ею одно из ее свойств:
источник
this.RuleFor(x => x.Foo).Must((x, foo) => x.Foo.Length + x.Bar.Length + x.Baz.Length < 20).WithMessage("The combined minimum length of the Foo, Bar and Baz properties should be longer than 20");
. Теперь посмотрите на код в моем ответе, который вам нужно написать с аннотациями данных, и скажите, какой из них вы предпочитаете. Модель декларативной проверки очень плохая по сравнению с императивной моделью.IsValid
он вызван,validationContext
имеет значение null. Есть идеи, что я сделал не так? :-(Самостоятельная проверка модели
Ваша модель должна реализовывать интерфейс
IValidatableObject
. Поместите свой код проверки вValidate
метод:Обратите внимание: это проверка на стороне сервера . На стороне клиента это не работает. Ваша проверка будет выполнена только после отправки формы.
источник
ExpressiveAnnotations дает вам такую возможность:
источник
Чтобы улучшить ответ Дарина, он может быть немного короче:
Модель:
Обратите внимание, что требуется сообщение об ошибке, иначе сообщение об ошибке будет пустым.
источник
Задний план:
Проверка модели необходима для гарантии того, что полученные данные действительны и верны, чтобы мы могли выполнять дальнейшую обработку с этими данными. Мы можем проверить модель в методе действия. Встроенные атрибуты проверки: Compare, Range, RegularExpression, Required, StringLength. Однако у нас могут быть сценарии, в которых нам потребуются атрибуты проверки, отличные от встроенных.
Настраиваемые атрибуты проверки
Чтобы создать настраиваемый атрибут проверки, вам необходимо унаследовать этот класс от ValidationAttribute.
Надеюсь это поможет. Ура!
Ссылки
источник
Немного поздно ответить, но кто ищет. Вы можете легко сделать это, используя дополнительное свойство с аннотацией данных:
Это все, что есть на самом деле. Если вы действительно хотите отобразить в определенном месте и ошибку проверки, вы можете добавить это в свое представление:
выполнение этого в представлении может пригодиться, если вы хотите выполнить локализацию.
Надеюсь это поможет!
источник