我正在尝试使用向导和我的网站在我的网站上创建一个流程多视角。为了给出一些背景我想要的是用户转到页面,该页面将显示向导中第一个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
{
}
}
希望我没有太多的胡扯,如果我需要提供更多信息,我很乐意这样做。
答案 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">