Fluent Validation、MVC:ボタンクリックでクライアント側のRuleSet検証をトリガーする

ジョシュア・デイリー

環境

ビューでは、ビューモデル用に1つのフォームを作成しましたTwitter Bootstrap Wizardプラグインを使用して、フォームを複数のセクションに分割しました。ユーザーは「次へ」ボタンをクリックして次のセクションにアクセスできます。各セクションには、そのセクションのモデルプロパティに対して定義されたFluent ValidationRuleSetがあります。各RuleSetで定義したルールは、FluentValidaitonのクライアント側の検証と互換性があります。

質問

次のボタンをクリックすると、最善の方法は何ですか。

  • Fluent Validationを使用して、クライアント側現在のセクションのRuleSetのみの検証状態を取得するには
  • Fluent Validationを取得して、現在のセクションのRuleSetのみのクライアント側の検証を表示するには?

私が試したこと

FluentValidationスタートガイドとこの質問を読みました彼らは私がサーバー側で探しているものを達成する方法を示していますが、クライアント側の質問に対処していないようです私はFluentValidationとMVCにかなり慣れていないので、太字で「見える」ので、リンクの内容を誤解している可能性があります。

ジョシュア・デイリー

FluentValidationが使用するjQuery検証ライブラリのコマンドを使用できます。

フォームの要素で、検証グループの認識に役立つ属性を定義します。例えば

@Html.EditorFor(model => model.GroupA_TextA, new { htmlAttributes = new { @class = "form-control", data_validation_group = "GroupA" }})

.settings.ignorejQuery検証ライブラリの構文を使用して、検証するグループを制御します。

FluentValidation検証済みフォーム内のグループとその全体を検証する機能を公開するクラスを作成しました。以下にTypeScriptとトランスパイルされたJavaScriptを含めました。

TypeScript

/**
 * For validating a form when Fluent Validation is used for model valdiation.
 */
interface IFluentValidationFormValidator {
    /**
     * The form to validate.
     */
    form: JQuery<HTMLElement>;

    /**
     * The name of the validation group to validate.
     */
    group: string;

    /**
     * Validate the entire form.
     */
    validate(): boolean;

    /**
     * Validate a validation group in the form.
     * @param group The name of the validation group to validate.
     */
    validateGroup(): boolean;
}

/**
 *
 */
class StandardFluentValidationFormValidator implements IFluentValidationFormValidator {
    /**
     * @inheritdoc 
     */
    form: JQuery<HTMLElement>;

    /**
     * @inheritdoc
     */
    group: string;

    /**
     * @inheritdoc
     */
    validate(): boolean {
        const formValidator = this.form.validate();
        formValidator.form();
        return formValidator.valid();
    }

    /**
     * @inheritdoc
     */
    validateGroup(): boolean {
        // The form validator.
        const formValidator = this.form.validate();

        // Perform standard validation on form if the validation group is undefined.
        if (this.group === undefined) {
            formValidator.form();
            return formValidator.valid();
        }

        // Current group validation settings.
        const initialValidateIgnoreSetting = formValidator.settings.ignore;

        // Ignore all elements but the group.
        formValidator.settings.ignore += `,:not([data-validation-group=${this.group}])`;

        // Valdiate the form.
        formValidator.form();

        // Reset group validation settings.
        formValidator.settings.ignore = initialValidateIgnoreSetting;

        // Return the validation state.
        return formValidator.valid();
    }
}

JavaScript

"use strict";
var StandardFluentValidationFormValidator = (function () {
    function StandardFluentValidationFormValidator() {
    }
    StandardFluentValidationFormValidator.prototype.validate = function () {
        var formValidator = this.form.validate();
        formValidator.form();
        return formValidator.valid();
    };
    StandardFluentValidationFormValidator.prototype.validateGroup = function () {
        var formValidator = this.form.validate();
        if (this.group === undefined) {
            formValidator.form();
            return formValidator.valid();
        }
        var initialValidateIgnoreSetting = formValidator.settings.ignore;
        formValidator.settings.ignore += ",:not([data-validation-group=" + this.group + "])";
        formValidator.form();
        formValidator.settings.ignore = initialValidateIgnoreSetting;
        return formValidator.valid();
    };
    return StandardFluentValidationFormValidator;
}());

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Fluent Validation in Razor Page

分類Dev

ASP.NET MVC Fluent Validationは、別の種類のクラスであるビューモデルのプロパティのクライアント側では機能しません

分類Dev

C#Fluent-検証

分類Dev

WPFのFluentリボンボタンコントロールのアイコンバッジ

分類Dev

クライアント側のボタンクリックを検証する方法

分類Dev

MVCでの流暢な検証:クライアント側の検証にRuleSetを指定します

分類Dev

ボタン(送信しない)をクリックするか、フォームに入力する際のYIIでのクライアント側の検証

分類Dev

Moqを使用してFluentインターフェースをモックする

分類Dev

AJAXリクエストの前のボタンクリックでのクライアント側の検証

分類Dev

スタンドアロンスクリプトでVapor3 Postgres Fluentを使用することは可能ですか?

分類Dev

How to call a method after fluent validation faliure

分類Dev

Fluent Validation Rule Builder Get Property Accessor

分類Dev

Whenを使用したMVCとFluent検証

分類Dev

ボタンをクリックせずにasp.netでクライアント側のTextBoxを検証する方法

分類Dev

Fluent NHibernateMySQLバッチ処理

分類Dev

Vapor 4 / Fluentとの取引

分類Dev

mvcでクライアント側の検証エラーを削除する

分類Dev

送信せずにASP.NET CoreMVCクライアント側の検証をトリガーする方法

分類Dev

VaporアプリケーションでFluentと結合する

分類Dev

ユーザーのコレクションをマップするEFCore Fluent API

分類Dev

IntelliJでFluent APIのフラット化を停止する方法

分類Dev

カスタムクライアント側の検証がASP.NETCoreでトリガーされない

分類Dev

テキストボックスのクライアント側でYouTubeのURLを検証する方法

分類Dev

ボタンクリックでクライアント側とサーバー側の両方の機能を実行する-特定のシナリオ

分類Dev

Fluent + Vaporで子をクエリします

分類Dev

クライアント側を呼び出す方法mvcのhtml送信ボタンをクリックします

分類Dev

asp.netmvcアプリケーションでリストボックスのクライアント側の検証を行う方法

分類Dev

Android でボタンのクリック イベントをプログラムでトリガーする

分類Dev

ボタンクリック時に空のテキストボックスに従ってクライアント側の検証が実行されます

Related 関連記事

  1. 1

    Fluent Validation in Razor Page

  2. 2

    ASP.NET MVC Fluent Validationは、別の種類のクラスであるビューモデルのプロパティのクライアント側では機能しません

  3. 3

    C#Fluent-検証

  4. 4

    WPFのFluentリボンボタンコントロールのアイコンバッジ

  5. 5

    クライアント側のボタンクリックを検証する方法

  6. 6

    MVCでの流暢な検証:クライアント側の検証にRuleSetを指定します

  7. 7

    ボタン(送信しない)をクリックするか、フォームに入力する際のYIIでのクライアント側の検証

  8. 8

    Moqを使用してFluentインターフェースをモックする

  9. 9

    AJAXリクエストの前のボタンクリックでのクライアント側の検証

  10. 10

    スタンドアロンスクリプトでVapor3 Postgres Fluentを使用することは可能ですか?

  11. 11

    How to call a method after fluent validation faliure

  12. 12

    Fluent Validation Rule Builder Get Property Accessor

  13. 13

    Whenを使用したMVCとFluent検証

  14. 14

    ボタンをクリックせずにasp.netでクライアント側のTextBoxを検証する方法

  15. 15

    Fluent NHibernateMySQLバッチ処理

  16. 16

    Vapor 4 / Fluentとの取引

  17. 17

    mvcでクライアント側の検証エラーを削除する

  18. 18

    送信せずにASP.NET CoreMVCクライアント側の検証をトリガーする方法

  19. 19

    VaporアプリケーションでFluentと結合する

  20. 20

    ユーザーのコレクションをマップするEFCore Fluent API

  21. 21

    IntelliJでFluent APIのフラット化を停止する方法

  22. 22

    カスタムクライアント側の検証がASP.NETCoreでトリガーされない

  23. 23

    テキストボックスのクライアント側でYouTubeのURLを検証する方法

  24. 24

    ボタンクリックでクライアント側とサーバー側の両方の機能を実行する-特定のシナリオ

  25. 25

    Fluent + Vaporで子をクエリします

  26. 26

    クライアント側を呼び出す方法mvcのhtml送信ボタンをクリックします

  27. 27

    asp.netmvcアプリケーションでリストボックスのクライアント側の検証を行う方法

  28. 28

    Android でボタンのクリック イベントをプログラムでトリガーする

  29. 29

    ボタンクリック時に空のテキストボックスに従ってクライアント側の検証が実行されます

ホットタグ

アーカイブ