【发布时间】:2013-07-03 14:33:41
【问题描述】:
我很难理解 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
在我的理解中,我应该无法通过按下一步进入第 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 步。
谁能解释这种行为?
【问题讨论】: