Wizard Control в ASP.NET — как установить для свойства NextButton Causesvalidation значение false

Я пытался установить его в коде, а также в разметке, но когда нажимается кнопка «Далее», страница проверяется, я хочу предотвратить это и контролировать, когда должна происходить проверка, а когда нет. Любые предложения или образцы кода будут оценены


person chugh97    schedule 01.05.2009    source источник
comment
Это сработало? Позвольте мне знать, если вам нужна дополнительная помощь! ;-)   -  person Cerebrus    schedule 03.05.2009


Ответы (1)


Самый простой способ сделать это — удалить все элементы управления валидатора из WizardStep, в котором проверка должна быть пропущена.

Однако, если вам нужны расширенные функции, вам нужно будет вручную установить свойство CausesValidation кнопок «Далее/Предыдущий» в вашем StepNavigationTemplate. Элемент управления ASP.NET Wizard не предоставляет ни свойств, позволяющих получить прямой доступ к элементам управления в NavigationTemplates, ни свойств для доступа к NavigationTemplate. Итак, нам нужно полагаться на метод FindControl для выполнения всего поиска.

Полезная информация, которую я нашел при исследовании этой проблемы, заключалась в том, что во время выполнения StepNavigationTemplate относится к внутреннему типу ASP.NET с именем StepNavigationTemplateContainer и имеет идентификатор "StepNavigationTemplateContainerID". Это позволило мне найти StepNavigationTemplate и, следовательно, кнопку «Далее».

Код следует:


protected void Wizard1_ActiveStepChanged(object sender, EventArgs e)
{
  int step = Wizard1.ActiveStepIndex;

  // Disable validation for Step 2. (index is zero-based)
  if (step == 1)
  {
    ToggleValidation(false);
  }
  else  // Enable validation for subsequent steps.
  {  
    ToggleValidation(true);
  }
}

private void ToggleValidation(bool flag)
{
  WebControl stepNavTemplate = this.Wizard1.FindControl("StepNavigationTemplateContainerID") as WebControl;
  if (stepNavTemplate != null)
  {
    Button b = stepNavTemplate.FindControl("StepNextButton") as Button;
    if (b != null)
    {
      b.CausesValidation = flag;
    }
  }
}
person Cerebrus    schedule 01.05.2009
comment
Событие Wizard1_ActiveStepChanged не срабатывает. Есть идеи? - person chugh97; 01.05.2009
comment
Тебе придется подключить его, приятель! Используйте вкладку Event окна свойств Visual Studio. - person Cerebrus; 01.05.2009
comment
Я подключил его, но событие не срабатывает. Должен ли я увеличивать ActiveStepIndex в NextButtonClick, чтобы он сработал? - person chugh97; 01.05.2009
comment
Нет, если само событие не срабатывает, значит, вы его неправильно подключили. Попробуйте установить точку останова в обработчике, чтобы убедиться, что он не срабатывает. - person Cerebrus; 01.05.2009
comment
Небольшое замечание — в Мастере, который я только что использовал, кнопка называлась StartNextButton. В противном случае, отличный совет. - person Jon Egerton; 02.07.2013