C# 有条件地添加到ASP.NET向导步骤中的控件显示为控件集合的一部分,与条件无关

C# 有条件地添加到ASP.NET向导步骤中的控件显示为控件集合的一部分,与条件无关,c#,asp.net,.net,dynamic,wizard,C#,Asp.net,.net,Dynamic,Wizard,我有一个ASP.NET向导步骤,其中包括一个基于上一步骤中所选内容的用户控件: <asp:WizardStep ID ="WizardStep3" runat="server" Title="Step 3"> <%switch (someFlag) { case ("value a"): %> &l

我有一个ASP.NET向导步骤,其中包括一个基于上一步骤中所选内容的用户控件:

        <asp:WizardStep ID ="WizardStep3" runat="server" Title="Step 3">
            <%switch (someFlag)
              {
                  case ("value a"):
            %>
                        <wizStep:Step3_ReportA ID="Step3_ReportA" runat="server" />
                        break;                                                        
                  case ("value b"):
            %>
                        <wizStep:Step3_ReportB ID="Step3_ReportB" runat="server" />
            <% 
                        break;
             } %>
        </asp:WizardStep>

打破
案例(“价值b”):
%>
(注意:这只是伪标记,所以不必担心语法)

这种方法似乎工作正常,避免了向页面动态添加控件的问题,以及由此带来的回发之间的持久性问题

但是,我还有以下代码用于验证步骤中选择的内容:

protected void wizReportWizard_NextButtonClick(object sender, WizardNavigationEventArgs e)
{
    int stepId = e.CurrentStepIndex;
    var wizardStepControls = wizReportWizard.WizardSteps[stepId].Controls.OfType<BaseWizardStep>().ToList();

    foreach (var wizardStepControl in wizardStepControls)
    {
        if (wizardStepControl.IsStepValid())
        {
            wizardStepControl.DoSomething();
        }
        else
        {
            e.Cancel = true;
            return;
        }
    }
}
protectedvoid wizReportWizard\u NextButtonClick(对象发送方,向导导航文塔)
{
int stepId=e.CurrentStepIndex;
var wizardStepControls=WizrReportWizard.WizardSteps[stepId].Controls.OfType().ToList();
foreach(wizardStepControls中的var wizardStepControls)
{
if(wizardStepControl.IsStepValid())
{
wizardStepControl.DoSomething();
}
其他的
{
e、 取消=真;
回来
}
}
}
我感到困惑的是
向导StepControls
包含两个step控件(
Step3_ReportA
Step3_ReportB
)-而不仅仅是由于
开关而包含的控件。当然,当呈现页面时,只输出一个控件

那么为什么switch语句中的所有控件都被报告为属于向导步骤控件集合,以及如何找到switch语句实际选择的控件?


提前谢谢

someFlag似乎是一个布尔值,您正在对字符串进行比较……而且我看不到这个“someFlag”变量的任何声明,它是布尔值吗?还是一根弦?

嗨,穆罕默德。这只是伪代码。实际上switch语句要复杂得多,并且基于枚举。因此,我不认为这是一个语法问题,因为页面呈现得很好;这只会将文本“”添加到输出HTML中,因此不起作用。无论如何,感谢你的建议,穆罕默德,不过我现在已经开始添加动态控件,只是处理相关的头痛问题!那么你想分享一下你错过了什么吗?