2011-12-11 22 views
0

私はUpdatePanelと検証を使用するWebページを持っています。そのため内で指定された要件のカスタムPage_ClientValidateは、updatepanelが使用されたときにオーバーライドされます。

、私は検証が失敗したときにカスタムモデルを表示しなければならないとこれまでのところ、私はPage_ClientValidateクライアント側の機能をオーバーライドすることによってこれを行うことができました:

function Page_ClientValidate(validationGroup) { 
    Page_InvalidControlToBeFocused = null; 
    if (typeof(Page_Validators) == "undefined") { 
     return true; 
    } 
    var i; 
    for (i = 0; i < Page_Validators.length; i++) { 
     ValidatorValidate(Page_Validators[i], validationGroup, null); 
    } 
    ValidatorUpdateIsValid(); 
    ValidationSummaryOnSubmit(validationGroup); 
    Page_BlockSubmit = !Page_IsValid; 
    if(!Page_IsValid) 
    { 
     displayError(); 
    } 
    return Page_IsValid; 
} 

これは動作しますUpdatePanelで新しいコンテンツを生成するとすぐに、元のPage_ClientValidateを含むScriptResource.axdが再びダウンロードされ、オーバーライドされているとわかりました。

これで、フィールドの横にエラーが表示されますが、displayError関数は呼び出されません。

提案がありますか?

エラースパンを監視して表示されるかどうかを確認するために何かを書くことを考えましたが、現時点ではそれが過剰であるかどうかはわかりません。

おかげ

ギャビン

答えて

1

あなたは$(ドキュメント).ready(...)を使用していますか?もしそうなら、クライアント側のpageLoad()を試してみてください。 http://encosia.com/document-ready-and-pageload-are-not-the-same/

+0

上記Page_ClientValidateは、他のすべてのアセットでロードされているjavascriptファイル内にあります。そこには$(function(){})があります。それはjQueryに依存しないので、検証とは何の関係もありません。ありがとう;) – Gavin

+0

はい、しかし、UpdatePanelのポストバックが実行されたときにいくつかのjを実行させたい場合はJSのpageLoad()に入れる必要があります。それ以外の場合は一度だけ実行します –

+0

それはウィンドウ[ Page_ClientValidate '] = function(validationGroup){///};オーバーライドされた、再び笑っている。それは可能な解決策ですか?私はそれを試してみましょう。 – Gavin

関連する問題