3

これは私を夢中にさせています。これらのSOスレッドからの回答を確認して試しましたが、役に立ちませんでした:

アカウント作成後の CreateUserWizard ステップ変更の問題

ASP.NET のコード ビハインドからウィザードを進める

nextbutton の Postback イベントで CreateUserWizardStep へのナビゲーションを防止する

データベースにユーザーを作成するウィザードステップの前に、ウィザードステップを追加しました。

(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 に進みます。

ヒントをいただければ幸いです。

4

1 に答える 1

2

ウィザードはここで次のステップに進むことをやめません。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;
}
于 2013-09-26T15:59:39.677 に答える