0

ASP.NET ウィザード コントロールの動作を理解するのに苦労しています。ハンドラー Wizard1.NextButtonClick を定義すれば、ActiveStepIndex を制御して、ウィザードが次に進むステップを決定できると考えました。[次へ] を押しても、ASP.NET は必ずしも次のステップに進むとは限りません。

ただし、 ActiveStepIndex の値を変更した場合にのみ、NextButtonClick 内からウィザードが次に進む場所を制御できるように見えます。しかし、ある状況では、私は現在のステップにとどまりたい. ただし、ActiveStepIndex の値を変更しなければ、ActiveStepIndex の値を明示的に設定し、独自の NextButtonClick を定義しても、ASP.NET は次のステップに進みます。

係員の手荷物に関する実際の問題を示すのではなく、簡単な図を作成しました。4 ステップのウィザードを作成しました。HTML には form タグ、body タグなどしかありません。

<asp:Wizard ID="Wizard1" runat="server">
  <WizardSteps>
    <asp:WizardStep ID="WizardStep0" runat="server" Title="Step 0">
    </asp:WizardStep>
    <asp:WizardStep ID="WizardStep1" runat="server" Title="Step 1">
    </asp:WizardStep>
    <asp:WizardStep ID="WizardStep2" runat="server" Title="Step 2">
    </asp:WizardStep>
    <asp:WizardStep ID="WizardStep3" runat="server" Title="Step 3">
    </asp:WizardStep>
  </WizardSteps>
</asp:Wizard>

ActiveStepIndex は 0 から実行されるため、デフォルトのステップ ID とタイトルを 1 ではなく 0 から実行するように変更しました。

次に、このハンドラーを分離コードに追加します

Protected Sub Wizard1_NextButtonClick(sender As Object, e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles Wizard1.NextButtonClick
  Wizard1.ActiveStepIndex = 1
End Sub

私の理解では、[次へ] を押してステップ 2 に進むことはできないはずです。でもやるよ。ステップ2に到達しないために、私はこれをしなければなりません

Protected Sub Wizard1_NextButtonClick(sender As Object, e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles Wizard1.NextButtonClick
  Wizard1.ActiveStepIndex = 3
  Wizard1.ActiveStepIndex = 1
End Sub

つまり、ActiveStepIndex が 1 の場合 (これはステップ 2 に到達できるが、到達すべきではないと考えている場合)、1 に戻す前に意図的にその値を変更します。

さらに興味深いことに、Wizard1.ActiveStepIndex をウォッチ ウィンドウに配置すると、ステップ 2 に移動しても、2 にはなりません。

誰でもこの動作を説明できますか?

4

1 に答える 1