【问题标题】:Wizard Control in ASP.NET - How to set the NextButton Causesvalidation property to falseASP.NET 中的向导控件 - 如何将 NextButton Causesvalidation 属性设置为 false
【发布时间】:2010-10-23 02:25:12
【问题描述】:

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

【问题讨论】:

  • 成功了吗?让我知道您是否需要额外的帮助! ;-)

标签: asp.net controls wizard


【解决方案1】:

最简单的方法是从 WizardStep 中删除所有验证器控件,其中将跳过验证。

但是,如果您需要高级功能,则需要手动设置 StepNavigationTemplate 中的 Next/Previous 按钮的 CausesValidation 属性。 ASP.NET 向导控件不公开允许您直接访问 NavigationTemplate 中的控件的属性,也不公开任何属性以访问 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;
    }
  }
}

【讨论】:

  • Wizard1_ActiveStepChanged 事件未触发。有什么想法吗?
  • 你必须把它连接起来,伙计!使用 Visual Studio 属性窗口的事件选项卡。
  • 我已将其连接起来,但事件未触发。我是否必须增加 NextButtonClick eventthanlder 中的 ActiveStepIndex 才能触发它?
  • 不,如果事件本身没有触发,则说明您没有正确连接它。尝试在处理程序中放置一个断点以验证它没有触发。
  • 次要注意 - 在我刚刚使用过的向导中,该按钮被称为 StartNextButton。否则,很好的提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多