asp:Wizard SideBarTemplate — динамическая CausesValidation вызывает ошибку Page.IsValid

Я пытаюсь сделать функцию SideBar более похожей на кнопки Prev/Next. Кнопки навигации проверяют правильность только при движении вперед; им все равно, вернетесь ли вы. Насколько я могу судить, у вас может быть только один или другой вариант на боковой панели, а не оба. Итак, вот что я пытался сделать:

<SideBarTemplate>
  <asp:DataList ID="SideBarList"  runat="server">
    <ItemTemplate>
      <asp:LinkButton ID="SideBarButton" runat="server" CausesValidation="<%# Container.ItemIndex >= myWizard.ActiveStepIndex %>" />
   </ItemTemplate>
  </asp:DataList>
</SideBarTemplate>

Он работает в будущем, но не работает на предыдущих шагах с этой ошибкой:

Page.IsValid нельзя вызывать до того, как будет выполнена проверка. Его следует запрашивать в обработчике событий для элемента управления, имеющего CausesValidation=True и инициировавшего обратную передачу, или после вызова Page.Validate.

Какие-либо предложения?

редактировать: я взглянул на это сообщение, но оно не решает проблему.


person end-user    schedule 03.09.2009    source источник


Ответы (1)


Я столкнулся с похожей проблемой, когда начал использовать StartNavigationTemplate, StepNavigationTemplate и FinishNavigationTemplate. Мое решение для StepNavigation состояло в том, чтобы поместить следующий фрагмент:

    protected void wiz_NextButtonClick(object sender, WizardNavigationEventArgs e)
    {
         if (e.CurrentStepIndex > 0 && Page.IsValid)
         {...

Я подозреваю, что это потому, что на моей первой странице нечего проверять.

Тем не менее, у меня все еще есть проблема, когда вызывается мой OnFinishButtonClick, и я пока не могу найти способ ее обойти.

person furtive    schedule 15.09.2010