ASP.NET向导控制misbehavinig?

时间:2013-07-05 13:10:29

标签: asp.net wizard

我很难理解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之前故意更改其值。

要添加到阴谋中,如果我在Watch窗口中放置Wizard1.ActiveStepIndex,它永远不会变为2,即使我转到第2步。

任何人都可以解释这种行为吗?

1 个答案:

答案 0 :(得分:1)

尝试将WizardNavigationEventArgs.Cancel标记设置为true