这快把我逼疯了。我已经查看并尝试了这些SO主题的答案,但都没有用:
CreateUserWizard step changing issue after account creation
Advancing wizard from code-behind in ASP.NET
Prevent Navigation to CreateUserWizardStep in the Postback event of nextbutton
我在数据库上创建用户的向导步骤之前添加了一个向导步骤:
(0)个人资料
(1)注册您的新帐户
(2)完整
在步骤0中,我有一个(可怕的) reCaptcha。步骤0的导航模板:
<StartNavigationTemplate>
<asp:Button ID="StartNextButton" runat="server" CommandName="MoveNext" Text="Next" OnClick="StartNextButton_Click" CausesValidation="true"/>
</StartNavigationTemplate>在这里,我验证了代码背后的reCaptcha。此处理程序声明是由VS2012创建的。如果验证失败,则应重新加载(并导航到)该步骤:
protected void StartNextButton_Click(object sender, EventArgs e)
{
recaptcha.Validate();
if (! recaptcha.IsValid)
{
RegisterUser.ActiveStepIndex = 0;
RegisterUser.MoveTo(RegisterUser.ActiveStep);
}
}理想情况下(以及我在早期版本中所做的)是在验证失败时设置e.Cancel = true。因为VS只传递EventArgs e,所以Cancel不可用,因此对ActiveStep的操作是空闲的。
调试显示验证正在工作,但在验证失败时-尽管将ActiveStepIndex设置为0-我还是转到了步骤1。
任何建议都将不胜感激。
发布于 2013-09-26 23:59:40
向导不会停止转到此处的下一步。您需要定义OnNextButtonClick并使用此事件取消移动到下一个向导步骤。
<asp:Wizard OnNextButtonClick="RegisterUser_NextButtonClick" ID="RegisterUser"
runat="server">
protected void RegisterUser_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
if(RegisterUser.ActiveStep==0)
{
recaptcha.Validate();
if (! recaptcha.IsValid)
{
e.Cancel = true;
}
}
return;
}https://stackoverflow.com/questions/19031440
复制相似问题