0

「RequredWhen」という新しい RequiredAttribute エクステンションを作成しました。

テキストボックスではうまく機能しますが、選択要素では機能しません。何らかの理由で、それらはクライアント側ではなくポストバックでのみ検証されます。「Required」ドロップダウンはクライアント側で適切に検証されるのに、「RequiredWhen」属性が検証に失敗しないのはなぜですか?

この属性を追加すると

[Required]

このマークアップを取得します

<select class="customSelect input-validation-error" data-val="true" data-val-number="The field x must be a number." data-val-range="Please select the correct range" data-val-range-max="5" data-val-range-min="0" data-val-required="The x field is required." id="x" name="x"></select>

これは、カスタム属性を追加すると発生しません。マークアップでは、すべての検証関連の属性が選択要素 (data-val など) から欠落していますが、それらは入力フィールドに適用されます。

選択した要素で検証を強制的に機能させるために、何か追加する必要がありますか? また、デバッグ時に GetClientValidationRules にこれらの要素が含まれていません。それが問題の一部だと確信しています。

私の属性は、select 要素で機能する RequiredAttribute を拡張するため、実装から除外される理由がわかりません。何か案は?

他の要素でうまく機能する私のjavascriptは次のとおりです。

    jQuery.validator.unobtrusive.adapters.add('requiredwhenchecked', [ 'otherproperty', 'checkedproperty', 'otherpropertyvalue' ],function (options) {
    // simply pass the options.params here
    options.rules['requiredWhenChecked'] = options.params;
    }
);

jQuery.validator.addMethod('requiredWhenChecked', function (value, element, params) {
    return true;
}, '');

「選択」属性を除いて、これをすべてうまく機能させるものがあります。

私の問題は、まだ解決策がないように見えるこれこのケースに関連している可能性があると思います


更新 解決策はありませんが、回避策があり、ここで見つけました! この厄介な問題を抱えている人に幸運を

4

1 に答える 1