asp:wizard
5 つの WizardSteps を含むコントロールがあります。これらのすべてのステップにはフォーム コントロールがあり、これらのコントロールのほとんどにはバリデータがあります。ユーザーが [次へ] ボタンと [前へ] ボタンを使用してウィザードを進めると、すべてがうまく機能し、検証が適切にトリガーされます。ただし、ユーザーがサイドバーのリンクを使用してウィザードをナビゲートすることを選択した場合、一部の手順をスキップできます。最後のページ (概要ページ) が送信されると、ウィザードのコントロールが無効になる場合があります。
私がやりたいことは、ユーザーが終了ボタンをクリックしたとき、またはユーザーが概要ページに入ったときに、すべてのコントロールの状態を確認する (またはすべてのバリデーターを実行する) ことです。これを行うことで、FinishButtonClick イベントですべてのバリデーターを実行しようとしました。
bool validates = true;
foreach (IValidator validator in this.Validators) {
validator.Validate();
if (!validator.IsValid) {
validates = false;
}
}
e.Cancel = !validates;
しかし、私がこれを行うと、すべてのバリデーターが有効であると主張します。また、すべてのコントロールを Visible = true; に設定しようとしました。このコードブロックの前に、これは効果がありません。何が間違っている可能性がありますか?それとも、これを行うより良い方法ですか?おそらく、私が見逃しているウィザードコントロールのネイティブ関数ですか?