CreateUserWizard 忽略 .MoveTo

Posted

技术标签:

【中文标题】CreateUserWizard 忽略 .MoveTo【英文标题】:CreateUserWizard ignores .MoveTo 【发布时间】:2013-09-26 14:46:07 【问题描述】:

这让我发疯了。我已经查看并尝试了这些 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 步。

任何提示将不胜感激。

【问题讨论】:

当然,一旦我发布了这篇文章,我想出了几种替代方法来实现这一点,但它们要么是 hack,要么是对我想要的工作流程的更改。仍然应该有办法做到这一点。 我在第 1 步结束时结束了验证码,一切都很好。 【参考方案1】:

向导不会在此处停止进入下一步。您需要定义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;

【讨论】:

我试过这个,但没有成功。在步骤 1 结束时结束了 recaptcha。

以上是关于CreateUserWizard 忽略 .MoveTo的主要内容,如果未能解决你的问题,请参考以下文章

删除用户名验证 createuserwizard

创建帐户后的 CreateUserWizard 步骤更改问题

createuserwizard/asp 登录控件问题 hostgator

在 OnCreatingUser 事件中编辑 CreateUserWizard 文本框

Findcontrol 属性在 createUserWizard 中不起作用

如何更改 createuserwizard 的样式? ASP.NET