1

複数のフィールドが必要な検索フォームを作成しています。ラジオ ボタンは、次のように入力が必要なフィールドを示します。

[ ] Field 1
[.] Field 2
    Field 3
[ ] Field 4

上記の場合、関連付けられたラジオ ボタンがチェックされているため、 Field 2andが必要になりました。Field 3これを達成するために、RequiredIf検証属性を実装しましたが、適切に機能します。

私の問題は、他の検証です。この場合、Field 1最小長の検証もあります。Field 1最小長の検証を尊重しない値がある場合、フォームは無効になり、送信できません。

必須ではないフィールドの検証を無効にする方法が必要です。(また、別のラジオボタンがチェックされているので、それらを元に戻すこともできます).

フィールドを「disabled=disabled」に設定することはできません。これにより、クライアントの要件により問題が解決されます。

data-val属性を削除するかfalse、上記のフィールドに設定してから、フォームを再度解析してみじめに失敗しました。

編集:確認するだけです。問題はクライアント側の検証です。

4

2 に答える 2

1

クライアント側とサーバー側の2つの検証が行われていることに注意してください。したがって、data-val属性を削除しても効果はありません。

さて、あなたのモデルでは、これらの検証ルールを追加するために[属性]を使用していると思います。この方法では条件付き検証ができないと思います。

この場合、FluentValidationが役立ちます。http://fluentvalidation.codeplex.com/

行うのは非常に簡単で、次のようなことができるはずです。

RuleFor(model => model.Field).NotEmpty().When(model => model.FieldEnabled);
于 2012-10-12T16:56:28.077 に答える
0

フィールドを「無効」に設定すると、意図したとおりに機能します。クライアントは、この要件について考えを変えました。時にはそれが最善の解決策です。

これは、より良い解決策のためにまだ開かれています。

編集 :

検証プラグインでドキュメントを検索することは考えていませんでした。rules ( "remove", rules ) のように使用できるかなり興味深いメソッドがいくつかあるようです。

于 2012-10-11T19:23:49.060 に答える