1

我已经尝试在代码和标记中设置它,但是当单击下一步按钮时,页面被验证,我想防止这种情况发生并控制何时应该进行验证,何时不进行。任何建议或代码示例将不胜感激

4

1 回答 1

5

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

但是,如果您需要高级功能,则需要手动设置CausesValidationNext/Previous 按钮的属性。StepNavigationTemplateASP.NET 向导控件不公开可让您直接访问 NavigationTemplate 中的控件的属性,也不公开任何属性以访问 NavigationTemplate。所以,我们需要依靠FindControl方法来完成所有的搜索。

我在研究这个问题时发现的一条方便的信息是,在运行时,它是一个名为“StepNavigationTemplateContainerID”StepNavigationTemplate的内部 ASP.NET 类型。StepNavigationTemplateContainer这使我能够找到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;
    }
  }
}
于 2009-05-01T13:20:55.257 回答