Это будет два вопроса:
У меня несколько текстовых полей. Все они - обязательные поля. Как использовать ONE validator для проверки всех текстовых полей? (то есть он вернет ошибку, если какой-либо из текстовых полей пуст)
У меня несколько текстовых полей. По крайней мере один из них - обязательные поля. Как использовать ONE validator для проверки таких условий? (т.е. он вернет ошибку, если ВСЕ текстовые поля пусты, но пройдет, если одна из этой группы текстовых полей имеет что-то в нем.)
Вам нужно использовать Custom Validator
(MSDN Link), так как вы не сможете делать то, что хотите, с помощью валидаторов на основе единого элемента управления.
Это позволит вам написать как клиентский, так и серверный код и ответить соответствующим образом.
Очень важно, чтобы вы реализовали серверный код, так как клиентскую сторону можно легко обойти кем-то, кто знает, что они делают. Клиентская сторона просто приятная.
Я не знаю, как это сделать, а не создавать свой собственный атрибут проверки. Существует более чем несколько способов достижения этого, но подход, который я бы использовал, - это присвоить атрибут всем включенным свойствам, а затем использовать отражение, чтобы проверить, имеет ли хотя бы одно из них значение (идентифицируя их, проверяя, есть ли у них атрибут). В методе IsValid атрибута ValidationAttribute у вас есть все доступ к экземпляру и тип, поэтому отражение должно сделать трюк. Кроме того, если вы хотите, чтобы проверка на стороне клиента работала, вы можете расширить IClientValidatable, отправить значения всех обязательных полей с помощью параметров правила GetClientValidationRules() и, наконец, написать свою собственную функцию javascript для выполнения правила. Это звучит как ужасная работа, и это так, но если вы сделаете ее достаточно гибкой, ее следует использовать повторно. Добавление и удаление атрибута для свойства в классе должно включать/исключать поле из списка проверки (если я могу так называть).
Здесь я познакомился с этим материалом, когда у меня были подобные проблемы: Условная валидация в ASP MVC
Настройте необходимый валидатор полей для каждого текстового поля и назначьте их группе проверки. Вы можете использовать элемент ValidationSummary для отображения всех результатов в одном списке.
Вы можете использовать специальный валидатор, если хотите сделать свою "одну из этих" логик. К сожалению, для этого потребуется реализовать как код проверки на стороне клиента, так и код проверки на стороне сервера, там нет проверки валидатора.
RequiredField
,Range
,RegularExpression
и т. Д.) Будут выполнять как на стороне клиента, так и на стороне сервера (если обнаруженный браузер поддерживает это). ПосколькуCustomValidator
написан вами, ваша задача - предоставить код на стороне клиента (необязательно) и на стороне сервера (технически необязательно, но абсолютно необходимо)