У меня есть элемент управления asp:wizard
, который содержит пять WizardSteps. Все эти шаги имеют элементы управления формой, и большинство из этих элементов управления имеют валидаторы. Когда пользователь запускает мастер с помощью следующей и предыдущей кнопок, все работает отлично, и триггеры проверки, как и должно быть. Однако, если пользователь выбирает навигацию с помощью ссылок в SideBar, он или она могут пропустить некоторые шаги. Когда отправляется последняя страница (которая является сводной страницей), могут быть элементы управления в недействительном мастере.Подтвердить все шаги мастера на FinishButtonClick
Что я хочу сделать, это проверить состояние всех элементов управления (или запустить все проверки), когда пользователь нажимает кнопку завершения или когда пользователь вводит итоговую страницу. Я сделал попытку запустить все валидаторы в случае FinishButtonClick делая это:
bool validates = true;
foreach (IValidator validator in this.Validators) {
validator.Validate();
if (!validator.IsValid) {
validates = false;
}
}
e.Cancel = !validates;
Но когда я делаю это каждый валидатор утверждает, что они являются действительными. Я также попытался установить все элементы управления в Visible = true; до этого кодового блока, но это не влияет. Любая идея, что может быть неправильным? Или это лучший способ сделать это, может быть, родная функция для элемента управления мастером, которого я пропускаю?
Я боялся, что это было что-то вроде этого.Проблема в том, что одним из требований к форме мастера является возможность навигации независимо от кнопок prev/next. Спасибо за подсказку на странице. Validate/IsValid. Я попробовал это первым, но поскольку он не вернул то, что я ожидал, я попытался перебрать все валидаторы. Возможно, мне следует отслеживать, какие WizardSteps были отображены (и проверены), а затем запретить вход на итоговую страницу ... – Erik
Вы могли бы сделать то, что предложили. Когда страница завершена, добавьте ее в ViewState. Затем, когда вы нажимаете кнопку «Готово», вы можете проверить, какие страницы были заполнены и проверены, и отобразить сообщение пользователю, запрашивающему заполнение страниц n, n и n. – Jamie
Спасибо, я пошел с вариацией этого. Я отслеживаю индекс WizardStep с самым высоким индексом, который также был проверен (сохранен в ViewState). Когда пользователь перемещается вперед в мастере, доступ запрещен и отображается сообщение об ошибке, если ((e.NextStepIndex - 1)> this.CurrentWizardStep). – Erik