【发布时间】:2010-10-23 02:25:12
【问题描述】:
我已经尝试在代码和标记中设置它,但是当单击下一步按钮时,页面被验证,我想防止这种情况发生并控制何时应该进行验证,何时不进行。任何建议或代码示例将不胜感激
【问题讨论】:
-
成功了吗?让我知道您是否需要额外的帮助! ;-)
我已经尝试在代码和标记中设置它,但是当单击下一步按钮时,页面被验证,我想防止这种情况发生并控制何时应该进行验证,何时不进行。任何建议或代码示例将不胜感激
【问题讨论】:
最简单的方法是从 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;
}
}
}
【讨论】:
StartNextButton。否则,很好的提示。