C# 有条件地添加到ASP.NET向导步骤中的控件显示为控件集合的一部分,与条件无关
我有一个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: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中,因此不起作用。无论如何,感谢你的建议,穆罕默德,不过我现在已经开始添加动态控件,只是处理相关的头痛问题!那么你想分享一下你错过了什么吗?