5

リモートメソッドにデータが送信される前と、リモートメソッドから結果が返された後で、クライアント上で控えめなリモート検証をMVC3にフックする方法はありますか?MVCの邪魔にならないリモート検証のためのイベントフック

送信ボタンをクリックした場合にのみ、リモートバリデータに検証を実行するように指示しています。通常の動作は、キーの押下、ぼかしなどのように、何度か検証することです。問題の検証メソッドが非冪等の操作を呼び出す必要があるため、これはうまくいきません。ユーザーが送信ボタンをクリックした場合にのみメソッドが呼び出されるようにする必要があります。

私は前のイベントにフックできる場合は、送信ボタンにクリックされているかどうかをフラグするフィールドをフォームに設定できます。しかし、リモートメソッドが検証結果を返すと、このフラグをリセットする必要があります。

他の提案はありますか?これは、ASP.NETメンバーシッププロバイダのMembership.ValidateUser(string username, string password)メソッドを使用してパスワードを検証するためのものです。あなたは、現在のページのデフォルトの検証オプションをオーバーライドすることができますなど、

答えて

7

をこの方法では、FailedPasswordAttemtCount無効なパスワードが送信されるたびにインクリメントしますので、私はそれがぼやけ中に実行する必要はありません、キー入力:

$.validator.setDefaults({ 
    onkeyup: false, 
    onfocusout: false, 
    onsubmit: true 
}); 
+0

デフォルト設定を上書きしても他のフォームに影響はありませんか?または、現在ロードされているページのデフォルトスコープのみを設定していますか? – danludwig

+0

現在ロードされているページのスコープのみ。 –

+0

これは本当に最高のソリューションです、ありがとう。私の好奇心を満足させるために、私の質問に「何もない」「それは簡単ではない」という答えがありますか? – danludwig

0

上記の解決策は私にとっては解決しませんでした。どういうわけか、バリデータの設定が設定されていませんでした。そこで、私は次のように実装しました:

$(function() { 
    var settings = $.data($('form')[0], 'validator').settings; 
    settings.onkeyup = false; 
}); 
関連する問題