我正在努力理解 ASP.NET 向导控件的行为。我认为如果我定义了一个处理程序 Wizard1.NextButtonClick,我可以控制 ActiveStepIndex 并确定向导下一步要执行的步骤 - 按下 Next 时,ASP.NET 不一定会将我带到下一步。
但是,似乎发生的情况是,只有在更改ActiveStepIndex 的值时,我才能从 NextButtonClick 中控制向导的下一步。但在一种情况下,我想停留在目前的步骤上。但是如果我不更改 ActiveStepIndex 的值,ASP.NET 将带我进入下一步,即使我明确设置了 ActiveStepIndex 的值,并且已经定义了我自己的 NextButtonClick。
我没有展示我在行李托运方面的实际问题,而是对此做了一个简单的说明。我创建了一个四步向导,HTML 中没有其他内容,只有一个表单标签、正文标签等
<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>
我将默认步骤 ID 和标题更改为从 0 而不是 1 运行,因为 ActiveStepIndex 从 0 运行。
然后我在代码隐藏中添加这个处理程序
Protected Sub Wizard1_NextButtonClick(sender As Object, e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles Wizard1.NextButtonClick
Wizard1.ActiveStepIndex = 1
End Sub
据我了解,我应该无法通过按 Next 进入第 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 放在 Watch 窗口中,即使我移至第 2 步,它也永远不会变为 2。
谁能解释这种行为?