c # Используйте два валидатора в одном поле - PullRequest
0 голосов
/ 23 июня 2009

Я столкнулся с проблемой при попытке изменить форму, которую сам не создал.

Форма имеет поле ввода asp: для значения даты, которое проверяется с помощью requiredFieldVal и rangeVal. Тип rangeVal имеет значение «date» и минимальное значение 2000-01-01: максимальное значение 3000-01-01

Теперь к проблеме, я пытаюсь добавить, чтобы пользователь также мог вводить дату в виде «20000101», другими словами, без «-».

Я попытался добавить еще один rangeVal с типом Integer и значениями min, max и поместить их в одну группу ValidationGroup, но это не сработало.

Как разрешить пользователю использовать оба (любой из них) формата в поле ввода даты.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 23 июня 2009

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

Вы можете использовать регулярное выражение (как указывает Кевин), но выполнение необходимой проверки (проверка того, что значение является действительным DateTime объектом и в указанном диапазоне) будет затруднительно выполнить чисто.

Я бы предложил написать свой собственный CustomValidator элемент управления, а затем использовать его для проверки ваших значений так, как вы хотите.

0 голосов
/ 23 июня 2009

Вы можете использовать валидатор регулярного выражения вместо валидатора диапазона. Я немного увлечен Regex, но я уверен, что вы можете найти что-то здесь.

http://www.regular -expressions.info /

Вот ссылка на страницу с датами:

http://www.regular -expressions.info / dates.html

попробуйте это, я думаю, что это будет работать. Если нет, дайте мне знать, и я постараюсь исправить это:

((19|20)\d\d[- /.](0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])|((19|20)\d\d(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])))

В другом посте речь шла о том, что это регулярное выражение не будет проверять некоторые недопустимые даты, например, 31 февраля. В этом случае я просто создал бы класс проверки, который наследовал бы от валидатора регулярного выражения, и переопределил метод EvaluateIsValid и проверил, не фактическая дата Это позволяет проводить большую часть проверки на стороне клиента, причем резервная копия находится на уровне сервера, который в любом случае должен выполнять вторичную проверку.

...