Самый простой способ сделать это - удалить все элементы управления валидатора из WizardStep
, в котором валидация должна быть пропущена.
Однако, если вам нужны расширенные функциональные возможности, вам нужно будет установить свойство CausesValidation
кнопок «Далее» и «Предыдущий» в StepNavigationTemplate
вручную. Элемент управления ASP.NET Wizard не предоставляет свойства, которые позволяют непосредственно обращаться к элементам управления в шаблонах NavigationTemplates, и не предоставляет никаких свойств для доступа к NavigationTemplate. Таким образом, мы должны положиться на метод FindControl
, чтобы выполнить весь поиск.
Удобная информация, которую я нашел при исследовании этой проблемы, заключалась в том, что во время выполнения StepNavigationTemplate
имеет внутренний тип ASP.NET с именем StepNavigationTemplateContainer
и имеет идентификатор «StepNavigationTemplateContainerID». Это позволило мне найти StepNavigationTemplate
и, следовательно, кнопку Next.
Код следует:
protected void Wizard1_ActiveStepChanged(object sender, EventArgs e)
{
int step = Wizard1.ActiveStepIndex;
// Disable validation for Step 2. (index is zero-based)
if (step == 1)
{
ToggleValidation(false);
}
else // Enable validation for subsequent steps.
{
ToggleValidation(true);
}
}
private void ToggleValidation(bool flag)
{
WebControl stepNavTemplate = this.Wizard1.FindControl("StepNavigationTemplateContainerID") as WebControl;
if (stepNavTemplate != null)
{
Button b = stepNavTemplate.FindControl("StepNextButton") as Button;
if (b != null)
{
b.CausesValidation = flag;
}
}
}