Пользовательский валидатор на кнопке asp? - PullRequest
0 голосов
/ 03 октября 2009

Мне нужно добавить проверку на кнопку asp, чтобы убедиться, что она нажата хотя бы один раз.

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

Я думал о проверке невидимого текстового поля рядом с кнопкой, но это не правильно. Хорошо ли создавать фиктивные элементы управления для такого рода вещей? Или это плохая практика? Любой совет?

Спасибо

Ответы [ 2 ]

2 голосов
/ 03 октября 2009

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

Затем на btnSubmit_Click я делаю:

if (!IsValid) return;

это заставит браузер запустить метод validate и отчитаться перед любыми сводными элементами управления, если проверка не удалась.

в вашем методе cusValidator_OnServerValidate вы проверяете, а затем устанавливаете args.IsValid = true | false в зависимости от результатов проверки. Вы также можете установить сообщение об ошибке из OnServerValidate, если вы проверяете несколько правил проверки в одном и том же валидаторе для одного и того же элемента управления (т. Е. Текстовое поле, которое не может быть пустым, но формат должен быть датой, или что-то подобное, может использовать обязательный fieldvalidator вместе с в этом случае)

2 голосов
/ 03 октября 2009

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

Однако, если по какой-то безумной причине вам НУЖНО использовать кнопку и убедиться, что пользователь нажимает на нее хотя бы один раз, просто установите переменную в своем коде и присвойте ей значение при нажатии кнопки. Проверяйте значение этой переменной во время проверки ... если переменная по-прежнему имеет значение по умолчанию, то это означает, что пользователь не щелкнул по ней.

//create variable
private bool _isButtonClicked;

//set to true when user clicks
_isButtonClicked = true;

//check if it has been clicked
if(_isButtonClicked == true)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...