ASP.NET Validator для нескольких полей

1

Это будет два вопроса:

  1. У меня несколько текстовых полей. Все они - обязательные поля. Как использовать ONE validator для проверки всех текстовых полей? (то есть он вернет ошибку, если какой-либо из текстовых полей пуст)

  2. У меня несколько текстовых полей. По крайней мере один из них - обязательные поля. Как использовать ONE validator для проверки таких условий? (т.е. он вернет ошибку, если ВСЕ текстовые поля пусты, но пройдет, если одна из этой группы текстовых полей имеет что-то в нем.)

Теги:
validation

3 ответа

5
Лучший ответ

Вам нужно использовать Custom Validator (MSDN Link), так как вы не сможете делать то, что хотите, с помощью валидаторов на основе единого элемента управления.

Это позволит вам написать как клиентский, так и серверный код и ответить соответствующим образом.

Очень важно, чтобы вы реализовали серверный код, так как клиентскую сторону можно легко обойти кем-то, кто знает, что они делают. Клиентская сторона просто приятная.

  • 0
    Вы говорите, что Валидация, которая входит в набор инструментов, на стороне клиента?
  • 1
    Насколько мне известно, все «другие» валидаторы ( RequiredField , Range , RegularExpression и т. Д.) Будут выполнять как на стороне клиента, так и на стороне сервера (если обнаруженный браузер поддерживает это). Поскольку CustomValidator написан вами, ваша задача - предоставить код на стороне клиента (необязательно) и на стороне сервера (технически необязательно, но абсолютно необходимо)
Показать ещё 2 комментария
0

Я не знаю, как это сделать, а не создавать свой собственный атрибут проверки. Существует более чем несколько способов достижения этого, но подход, который я бы использовал, - это присвоить атрибут всем включенным свойствам, а затем использовать отражение, чтобы проверить, имеет ли хотя бы одно из них значение (идентифицируя их, проверяя, есть ли у них атрибут). В методе IsValid атрибута ValidationAttribute у вас есть все доступ к экземпляру и тип, поэтому отражение должно сделать трюк. Кроме того, если вы хотите, чтобы проверка на стороне клиента работала, вы можете расширить IClientValidatable, отправить значения всех обязательных полей с помощью параметров правила GetClientValidationRules() и, наконец, написать свою собственную функцию javascript для выполнения правила. Это звучит как ужасная работа, и это так, но если вы сделаете ее достаточно гибкой, ее следует использовать повторно. Добавление и удаление атрибута для свойства в классе должно включать/исключать поле из списка проверки (если я могу так называть).

Здесь я познакомился с этим материалом, когда у меня были подобные проблемы: Условная валидация в ASP MVC

0

Настройте необходимый валидатор полей для каждого текстового поля и назначьте их группе проверки. Вы можете использовать элемент ValidationSummary для отображения всех результатов в одном списке.

Вы можете использовать специальный валидатор, если хотите сделать свою "одну из этих" логик. К сожалению, для этого потребуется реализовать как код проверки на стороне клиента, так и код проверки на стороне сервера, там нет проверки валидатора.

  • 3
    Я дрожу, когда вижу ссылку на w3fools.com (см. Ссылки на сайте)
  • 0
    @freefaller обычно я бы согласился, но это был самый высокий рейтинг за пределами SO. Я выбрал другой.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню