2009-08-04 8 views
1

データ収集ウィザードに問題があります。.NET側ウィザードでサーバー側CustomValidatorが遅すぎる

私のウィザードにはクライアントサイドバリデーター(正規表現、必須フィールドなど)が多数あり、すべて正常に動作します。

CustomValidatorをコントロールの1つに追加しました。これは、サーバーサイドコードを呼び出しています。 (不幸にもそれはサーバー側でなければならない)。

私の問題は、このコードは、ウィザードが次のステップに移動した後(または移動中)に呼び出されるようです。

したがって、それは検証のためにfalseを返すという事実は、私にはほとんど役に立たない...

次のように私は私のInitControl方法の一部として、動的検証を追加してい:

mustUploadAnImageValidator = new CustomValidator(); 
mustUploadAnImageValidator.ControlToValidate = radioButtonList.ID; 
mustUploadAnImageValidator.ValidationGroup = "wizardGroup"; 
mustUploadAnImageValidator.ErrorMessage = "You must select a valid gallery image to use"; 
mustUploadAnImageValidator.Display = ValidatorDisplay.Static; 
mustUploadAnImageValidator.ServerValidate += 
    new ServerValidateEventHandler(mustUploadAnImageValidator_ServerValidate); 
mustUploadAnImageValidator.CssClass = "galleryValidationMessageTop"; 

これは他のすべてのバリデータでも機能しますが、サーバー検証が返される前にウィザードが動いている理由を理解できません。

サーバー側のメソッドから呼び出されたjavaScriptのポップアップを追加しました。これは基本的に「私は無効です」と表示されます。&これは画面の移動直後に表示されます。

感謝の気持ちで何か提案がありました。

答えて

2

私はこれを整理することができました。

NextButtonClick & PreviousButtonClickのイベントハンドラを追加しました。これは単にページ検証を再度呼び出すだけです。

protected virtual void DataCollectionWizard_PreviousButtonClick(object sender, WizardNavigationEventArgs e) 
    { 
     //manually validate the page, as the automatic validation seems to ignore CustomValidators 
     Page.Validate("wizardGroup"); 

     if (!Page.IsValid) 
     { 
      e.Cancel = true; 
     } 
    } 

私のサーバー側のバリデータが今一度、次のステップに移るウィザードを停止し、この方法によって無視され、元のウィザードコード、および2回目で、二回呼び出されます。.. ..

これは世界で最も良い解決策ではありませんが、少なくとも機能しています!私は実際に何が起こっているのか分かったら、この投稿を更新します。

+1

"実際に何が起こっているのか分かりましたら更新します。"してください! – Beska

0

Initイベントですべてのポストバックにコントロールを追加していることを確認してください。

編集

また、手動でカスタムバリデータ用のクライアント側の検証を配線する必要があります。

+0

こんにちは、CustomValidatorコントロールは、initメソッドのcontrolsコレクションに追加されています。 必要なフィールドバリデーターが同時に追加され、正常に動作します。 私はそれがサーバ側のVsクライアント側のものでなければならないと思います... –

+0

クライアントの検証が設定されていませんか? – ScottE

+0

申し訳ありませんが、明らかにしていません - mustUploadAnImageValidatorコントロールに対してクライアント検証が設定されていませんが、radioButtonListにはrequiredFieldValidatorがあります。 このバリデータはうまくいきますが、CustomValidatorはうまくいきません。 requiredFieldValidatorがクライアントサイドスクリプトを作成するのは私の理解です。 –

関連する問題