0
我有一個ASP.NET嚮導步驟包括基於什麼在先前步驟中選擇的用戶控制,而不管顯示作爲對照集合的一部分的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>
(注:這只是僞標記,所以不要擔心語法)
這種做法似乎工作好,避免了動態添加控件到頁面的問題,並回傳頭痛之間的所有的堅持帶來的。
不過,我也有下面的代碼是用來驗證什麼,在步驟中選擇:
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;
}
}
}
什麼我發現令人困惑的是,wizardStepControls
包含兩個步驟控制(Step3_ReportA
和Step3_ReportB
) - 不僅僅是由於switch
聲明而包含的控件。當然,當頁面呈現時,只輸出一個控件。
那麼爲什麼switch語句中的所有控件都被報告屬於嚮導步驟控件集合,以及如何找到哪個是switch語句實際選擇的那個?
在此先感謝!
嗨穆罕默德。這只是僞代碼。實際的switch語句要複雜得多,並且基於枚舉。因此,我不認爲這是一個語法問題,因爲頁面呈現很好。 – 2012-01-11 11:40:09
改爲使用 Response.Write(@「 」); –
Rizwan
2012-01-12 08:13:45
這隻會將文本「 」添加到輸出HTML中,因此不起作用。無論如何,感謝您的建議穆罕默德,但是我現在已經放棄了添加動態控制,只是處理相關的頭痛! –
2012-01-12 09:55:06