Элементы управления, добавленные условно к шагу мастера ASP.NET, отображаемому как часть коллекции элементов управления, независимо от условия - PullRequest
0 голосов
/ 11 января 2012

У меня есть шаг мастера 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?

Заранее спасибо!

1 Ответ

0 голосов
/ 11 января 2012

someFlag кажется логическим, и вы сравниваете строку ... Более того, я не вижу никакого объявления этой переменной "someFlag", это логическое значение? или это строка ??

...