【问题标题】:ASP.NET Wizard control misbehavinig?ASP.NET 向导控件行为异常?
【发布时间】: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 步。

谁能解释这种行为?

【问题讨论】:

    标签: asp.net wizard


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-17
      • 2011-06-15
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多