无法在向导控件中显示步骤

时间:2016-02-01 15:27:21

标签: c# asp.net

我正在尝试使用向导和我的网站在我的网站上创建一个流程多视角。为了给出一些背景我想要的是用户转到页面,该页面将显示向导中第一个ActiveStep中包含的一个视图。这将使用我已经拥有的某些信息来计算,我们将调用视图选项1和选项2.

从选项1或2我希望有一个按钮(下面发布的标记底部的下一个),它将移动到向导的第2步。我到目前为止所遇到的是,当页面加载向导中的ActiveStep并且View都为null导致异常时,所以我想知道它是如何实际初始化的?我知道视图如果我删除了标记并将其放在向导之外,那么它工作正常,但它不包含在另一个控件中。我希望一旦我真正得到了页面加载,其他一切都将落实到位。

<asp:Wizard ID="optionsWizard" runat="server" DisplaySideBar="false" Width="100%" FinishCompleteButtonText="Submit" OnFinishButtonClick="optionsWizard_FinishButtonClick"
    StepPreviousButtonText="Previous" OnNextButtonClick="optionsWizard_NextButtonClick">
    <asp:WizardSteps>
        <asp:WizardStep ID="wsoptionsMaintenance" runat="server" Title="<div class='active'>Step 1</div><div>Step 2</div>" OnActivate="wsoptionsMaintenance_Activate">
            <asp:MultiView ID="mvoptions" runat="server">
                <asp:View ID="vwActivate" runat="server">
                    <asp:Panel ID="pnloptionsActivation" runat="server">
                        <fieldset>
                            <span class="legend">Option 1</span>
                            <div class="wholeFormEntryContainer">
                                <asp:Panel ID="pnlActivateNewoptions" runat="server" CssClass="formEntryContainer">
                                    <p>
                                        Some text for option 1
                                    </p>
                                </asp:Panel>
                                <asp:Panel ID="pnlRequestNewoptions" runat="server" CssClass="formEntryContainer">
                                </asp:Panel>
                            </div>
                        </fieldset>
                    </asp:Panel>
                </asp:View>
                <asp:View ID="vwReplace" runat="server">
                    <asp:Panel ID="pnlOrderGridCard" runat="server">
                        <fieldset>
                            <span class="legend">Option 2</span>
                            <div class="wholeFormEntryContainer">
                                <p>
                                    Some text for option 2                                      
                                </p>
                            </div>
                        </fieldset>
                    </asp:Panel>
                </asp:View>
            </asp:MultiView>
        </asp:WizardStep>
        <asp:WizardStep ID="wsRegisteroptions" runat="server" Title="<div>Step 1</div><div class='active'>Step 2</div>">
            <asp:Panel ID="pnloptionsRegistration" runat="server">
                <fieldset>
                    <span class="legend">Option Register</span>

                    <div class="wholeFormEntryContainer">
                        <p>
                            Text for registering options.
                        </p>
                        <asp:TextBox runat="server" ID="txtUsername" Width="250" /><p></p>
                        <asp:TextBox runat="server" ID="txtPassword" Width="250" />
                        <p></p>
                    </div>
                </fieldset>
            </asp:Panel>
        </asp:WizardStep>
    </asp:WizardSteps>


    <StartNavigationTemplate>
        <asp:Button ID="StartNextButton" UseSubmitBehavior="false" runat="server" CommandName="MoveNext"
            Text="Next" CssClass="btnNext floatRight" />
        <asp:Button ID="btnLoginCancel" runat="server" Text="Cancel" OnClick="btnLoginCancel_Click"
            CssClass="btnCancel floatRight" UseSubmitBehavior="false" ValidationGroup="cancel" />
    </StartNavigationTemplate>
    <StepNavigationTemplate>
        <asp:Button ID="StartNextButton" UseSubmitBehavior="false" runat="server" CommandName="MoveNext"
            Text="Next" CssClass="btnNext floatRight" />
    </StepNavigationTemplate>
    <FinishNavigationTemplate>
        <asp:Button ID="FinishButton" UseSubmitBehavior="false" runat="server" CommandName="MoveComplete"
            CssClass="btnContinue floatRight" Text="Next" />
    </FinishNavigationTemplate>
</asp:Wizard>

就后端代码而言,以下是对所发生情况的了解:

页面加载,ActiveStepIndex为-1,但它显示0步可用,即使标记中有两个。 Mvoptions目前无效。

    protected void Page_Load(object sender, EventArgs e)
    {
        optionsWizard.ActiveStepIndex = 1;  // Throws exception as there are 0 Steps in the Wizard
         if (mvOptionView != null)
         {
                // Do some stuff, but it never comes in here as it is null
         }
    }

如果我在optionsWizard.ActiveStepIndex = 1上放置一个断点并跳过它,那么处理将继续进入Page_PreRender。在此阶段,它会触发另一个异常,页面将失败。

    protected void Page_PreRender(object sender, EventArgs e)
    {
        switch (optionsWizard.ActiveStep.ID)  // Null reference exception thrown, ActiveStep is null
        {
        }
    }

希望我没有太多的胡扯,如果我需要提供更多信息,我很乐意这样做。

1 个答案:

答案 0 :(得分:0)

  到目前为止,

是当页面在向导中加载ActiveStep时   并且视图都为空,导致异常

添加stepType = Start to first View like like

 <asp:WizardStep ID="wsoptionsMaintenance" runat="server" Title="<div class='active'>Step 1</div><div>Step 2</div>" OnActivate="wsoptionsMaintenance_Activate" StepType="Start">