1

コードとマークアップで設定しようとしましたが、[次へ] ボタンをクリックするとページが検証されます。これが発生するのを防ぎ、検証がいつ行われ、いつ行われないかを制御したいと考えています。提案やコードサンプルをいただければ幸いです

4

1 に答える 1

5

WizardStepこれを行う最も簡単な方法は、検証をスキップする からすべての検証コントロールを削除することです。

ただし、高度な機能が必要な場合CausesValidationは、[次へ/前へ] ボタンのプロパティをStepNavigationTemplate手動で設定する必要があります。ASP.NET Wizard コントロールは、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;
    }
  }
}
于 2009-05-01T13:20:55.257 に答える