Мастер управления в ASP.NET - Как установить для свойства NextButton Causesvalidation значение false - PullRequest
1 голос
/ 01 мая 2009

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

1 Ответ

5 голосов
/ 01 мая 2009

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

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

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

Код следует:


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;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...