我很难理解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步。
任何人都可以解释这种行为吗?
答案 0 :(得分:1)
尝试将WizardNavigationEventArgs.Cancel
标记设置为true