ASP.NET의 마법사 제어 - NextButton CauseSvalidation 속성을 False로 설정하는 방법

StackOverflow https://stackoverflow.com/questions/811040

  •  03-07-2019
  •  | 
  •  

문제

코드와 마크 업에서도 설정을 시도했지만 다음 버튼을 클릭하면 페이지가 검증되면 유효성 검사가 발생할 때 발생하지 않아야합니다. 모든 제안이나 코드 샘플에 감사드립니다

도움이 되었습니까?

해결책

이 작업을 수행하는 가장 쉬운 방법은 모든 유효성 검사기 컨트롤을 WizardStep 어떤 유효성 검사를 건너 뛸 것입니다.

그러나 고급 기능이 필요한 경우 CausesValidation 다음/이전 버튼의 속성 StepNavigationTemplate 수동으로. ASP.NET 마법사 제어는 NavigationTemplates의 컨트롤에 직접 액세스 할 수있는 속성을 노출시키지 않으며 NavigationTemplate에 액세스하기위한 속성을 노출시키지 않습니다. 따라서 우리는에 의존해야합니다 FindControl 모든 검색을 수행하는 방법.

이 문제를 조사하는 동안 찾은 편리한 정보는 런타임에 StepNavigationTemplate 호출 된 내부 ASP.NET 유형입니다 StepNavigationTemplateContainer 그리고 ID "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;
    }
  }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top