ASP.NET中的向导控件 - 如何将NextButton Causesvalidation属性设置为false

时间:2009-05-01 11:27:59

标签: asp.net controls wizard

我已尝试在代码中设置它,也在标记中设置它,但是当单击“下一步”按钮时,页面已经过验证,我希望在验证发生时以及何时不发生时将其发生并进行控制。任何建议或代码样本将不胜感激

1 个答案:

答案 0 :(得分:5)

最简单的方法是从要跳过验证的WizardStep中删除所有验证程序控件。

但是,如果您需要高级功能,则需要手动设置CausesValidation中“下一个/上一个”按钮的StepNavigationTemplate属性。 ASP.NET向导控件不公开允许您直接访问NavigationTemplates中的控件的属性,也不公开任何属性来访问NavigationTemplate。因此,我们需要依靠FindControl方法进行所有搜索。

我在研究此问题时发现的一条便利信息是,在运行时,StepNavigationTemplate是一个名为StepNavigationTemplateContainer的内部ASP.NET类型,其ID为“StepNavigationTemplateContainerID”。这使我能够找到StepNavigationTemplate,因此找到了下一个按钮。

代码如下:


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;
    }
  }
}