В ASP.NET 2 я использовал валидаторы полей и валидаторы RequiredField, но не знаю, как справиться с подобным случаем.
У меня есть два флажка на странице, и мне нужно убедиться, что установлен хотя бы один из них. Итак, если вы посмотрите в двоичном формате, это может быть 01, 10 или 11, но не может быть 00. Мой вопрос: как лучше всего сделать это с помощью флажков?
Могут ли обычные валидаторы ASP справиться с этим, или мне нужно будет создать целочисленное значение, как упомянуто выше, где-то спрятать, и использовать RangeValidator для проверки, чтобы убедиться, что это значение никогда не равно нулю?





Используйте CustomValidator
@JonPeterson Я попытался отредактировать ссылку, но ответ слишком короткий (19 символов, в то время как SO, по-видимому, применяет 30), поэтому он отказывается принимать изменения.
Этот элемент управления (написанный мной) поддерживает CheckBox и CheckBoxList:
http://www.codeproject.com/KB/validation/AtLeastOneOfValidator.aspx
Просто добавьте его в визуальную студию, поместите на свою страницу и добавьте флажки в список элементов управления. Он будет работать как любой другой элемент управления валидатором.
Спасибо, Джоэл .. Ты знаешь, я собираюсь скачать это и проверить. Я смог сделать то, что мне нужно, с помощью специального валидатора, но если бы мне пришлось сделать еще больше проверки, он может не делать то, что я хочу ...
Преимущество этого перед настраиваемым валидатором заключается в том, что вы получаете проверку на стороне клиента без написания какого-либо javascript.
В худшем случае вы можете написать CustomValidator, который может делать все, что вам нравится. Похоже, вам нужно что-то вроде:
isValid = Check1.Checked | Check2.Checked
Чтобы указать другим, кто может это прочитать, вы должны выполнить «arguments.IsValid = (CheckBoxAccident.Checked | CheckBoxTrafficViolation.Checked);», но у вас была точная правильная идея. Спасибо чувак!
Пользовательский валидатор - очевидное решение. Кроме того, при использовании настраиваемого валидатора вы также должны проверить действительность на стороне сервера на случай, если по какой-либо причине произойдет сбой javascript.
P.S .: Не всегда доверяйте тому, что вам присылает клиент (браузер).
В этом случае я не могу заставить работать клиентскую сторону, только серверную. Поскольку это asp: CheckBox, я проверяю, я должен опустить ControlToValidate ....
Вот статья, которую я написал по этому поводу. Я также хотел проверить несколько элементов управления, что было легко с помощью CustomValidator, но одна из проблем, которые меня не устраивали, заключалась в том, что если вы исправили проблему проверки, ошибка не исчезла, пока вы не отправили ответ.
Я придумал способ скрыть сообщение об ошибке и перепроверить и написал об этом небольшую запись в блоге. Проверьте это и посмотрите, что вы думаете.
Ага. Это помогло. Я бы выбрал ваш ответ, но у Яна было немного больше информации, хотя я уже понял, как вы проверяете два значения bool, я хотел, чтобы другие могли это понять. Но спасибо за ссылку, она пригодилась, и это было именно то, что мне нужно.