0

サーバーsidie(.net mvc)で実行するカスタム検証チェックがあります。

失敗した場合は、入力ボックスの横にメッセージを表示してユーザーに通知します(jqueries検証プラグインが箱から出してどのように機能するか)。

これを行うために呼び出すことができる組み込み関数(検証プラグイン内)はありますか?

更新 ソリューションは、理想的にはプラグイン自体を使用することです。おそらく、使用できるメソッド呼び出しがありますか?

4

3 に答える 3

2

はい、これにはがあります。

基本的rules: {FIELD: {remote: "URL"}}には、検証時に呼び出しが行わURL?FIELD=valueれ、サーバー上でtrueまたはが返されますfalse

于 2009-07-28T20:57:05.850 に答える
1

これを行うxValというオープン ソース プロジェクトがあります。以下は、プロジェクトのホームページからの抜粋です。

プロジェクトの説明 xVal は、ASP.NET MVC アプリケーションの検証フレームワークです。これにより、サーバー側の検証メカニズムの選択とクライアント側の検証ライブラリの選択を簡単にリンクでき、ASP.NET MVC アーキテクチャと規則の両方にうまく適合します。特徴

  • モデル プロパティの属性を使用して検証ルールを定義します。

    [必須] [StringLength(50)] public string Name { get; 設定; }

(または、必要に応じて、ルールをプログラムで指定するか、特定のビューにハードコードすることもできます)

  • フォームの投稿を処理し、ModelState でエラー情報を保存および取得するための ASP.NET MVC 規則に適合するように設計されています。
  • 選択したサーバー側検証フレームワークを使用します。xVal をそのまま使用すると、.NET 3.5 の組み込み DataAnnotations クラスまたは Castle Validator (またはその両方) を使用できます。別のものを使用したい場合は、IRulesProvider を実装するだけで独自のプロバイダーを作成できます。
  • 選択したクライアント側検証ライブラリを使用します。xVal をそのまま使用すると、jQuery Validation または ASP.NET のネイティブ クライアント側検証ライブラリ (別名 WebUIValidation.js、WebForms で使用) を使用できます。または、プラグインを作成して xVal の標準 JSON ルール記述形式を使用して設定することにより、他のクライアント側検証ライブラリを使用します。
  • リソース ファイルを使用してローカライズされたエラー メッセージをサポートします。現在のスレッドのカルチャに従って、検証メッセージの言語を変更します。
  • 既存のルールをサブクラス化するか、カスタム JavaScript 関数を参照することにより、サーバーとクライアントの両方で実行されるカスタム検証ロジックを追加します。
于 2009-07-28T18:08:15.223 に答える
0

カスタム検証関数を作成し、それをajax呼び出しと組み合わせることができます。この場合、ajax呼び出しはテキスト「true」または「false」を返します。

var customFunction = function(value, element, param) {
    var isValid = false;
    $.ajax({
        url: '/something',
        data:{value: value},
        success: function(data, textStatus) {isValid = data;},
        dataType: 'json',
        async: false
    });
    return isValid;
};

$.validator.addMethod("customFunction", customFunction, "That isn't valid.");

$('form').validate({
    rules: {
        fieldname: {
            customFunction: true
        }
    }
});

編集:実際には、代わりにsvintoが言及しているリモートメソッドを使用してください。それが存在することすら知りませんでした。私はバカです。

于 2009-07-28T20:45:41.753 に答える