問題タブ [validationattribute]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2140 参照

c# - カスタム ValidationAttribute と INotifyDataErrorInfo を使用して、別のプロパティが検証されたときに、あるプロパティで検証をトリガーする方法

最近まで、私はIDataErrorInfoインターフェースのカスタム拡張バージョンを使用していました。私の拡張機能を使用すると、複数のエラーを同時に処理できます。これまでのところ、非常にうまく機能しています。しかし、INotifyDataErrorInfoインターフェースが導入されたので、何か改善点があるかどうか試してみようと思いました。

いくつかのオンライン チュートリアルに従った後ValidationAttributeSystem.ComponentModel.DataAnnotations namespace. これらAttributeの を使用すると、次のような基本的な検証ルールを提供できます。

Valaidation.Errorsエラーメッセージは、適用された s で利用可能なコレクションに直接プラグインされるため、最初はかなり良いように見えましたErrorTemplate。ただし、組み込みの検証ルールのほとんどは本当に基本的なものであり、他のプロパティ値を含む複雑な検証ルールを実装する必要があることに慣れています。

そこで、複数のプロパティを含む単純な検証ルールを作成する方法を見つけようと試みました。これは、2 つ以上のフィールドのいずれかを設定する必要があるというルールです。そこで、 を拡張するクラスを宣言し、ValidationAttributeオンラインで検索した後、他のプロパティ値にアクセスする方法を見つけました。

各 にカスタムErrorTemplateを適用して基本的な UI を作成し、データ バインド プロパティTextBoxのコレクションを表示しました。Validation.Errors

プロパティのカスタムAttributeセットを使用して、どちらのプロパティも設定されていないときにインターフェイスを介してコレクションNameに を追加することができましたが、ここに問題があります。他の必要なプロパティにバインドされた他の es データのいずれかに値を追加した場合、最初のエラーメッセージはそこに残ります。ValidationResultValidation.ErrorsTextBoxTextBox

最初に戻ってTextBox何かを入力すると、検証が機能するため、値を削除しても、必要なプロパティの 1 つが設定されていることがわかりました。したがって、検証コードは機能しますが、問題は、他の必要なプロパティへのプロパティの変更がプロパティの検証をトリガーしないことNameです。

同じカスタムAttributeを他の必須プロパティに適用した場合でも、同じことが起こりました...各検証エラーは、関連するTextBox. CustomValidationAttributeクラス内のメソッドを呼び出して検証できるようにする組み込みも試しましたが、最終結果は同じでした。

検証コードは機能しますが、他の必要なプロパティの変更によってトリガーされません。他のプロパティの名前を渡してメソッドを呼び出してみValidateましたが、それは連続ループで終了しました。問題は、別のプロパティが検証されたときに、あるプロパティで検証をトリガーするにはどうすればよいかということです。

0 投票する
1 に答える
21474 参照

c# - C# MVC 内での列挙値の検証。部分的な検証が発生する - 検証動作を変更するには?

カミソリ ビュー内の列挙型を非表示フィールドとして表現してきました。これは、アクションの結果にポストされます。

HTML 内で提供された文字列値をバインドすると、列挙型の値が自動的に検証されることに気付きました。

かみそり:

レンダリングされた HTML:

DOM 内の値を間違った値に変更してフォームを送信すると、ModelState.IsValid返さfalseれ、次のエラーが ModelState に追加されます。

[Required]それはすべてグレービーですが、ビューモデルを作成した場合、ビューモデルに属性などの検証ルールを明示的に設定する必要があると思いました。

また、これ専用の と呼ばれる検証属性もありますEnumDataType

質問

バインディング時に検証が自動的に行われる場合、EnumDataTypeデータ検証属性のポイントは何ですか?

0 投票する
1 に答える
11112 参照

c# - C# カスタム属性が必要な場合

カスタム属性を始めたばかりで、とても気に入っています。プロパティに適用され、同じオブジェクト内の別のプロパティの名前を示す属性を作成できるかどうか疑問に思っています。参照されたプロパティに値があるかどうかを確認し、値がある場合は、装飾された属性が必要になります。このようなもの:

したがって、承認者プロパティは、プロパティを参照して null をチェックする RequiredIfNotNull 属性で修飾されます。この場合、承認日。ApprovedDate に値がある場合は、ApprovedBy プロパティを必須にする必要があります。このようなことは可能ですか?もしそうなら、サーバー側とクライアント側を実装できますか?

0 投票する
1 に答える
76 参照

c# - エディター テンプレートを使用し、ValidationAttribute である DataTypeAttribute を作成します。

MVC5 と .NET 4.5 の使用

Editor Template を使用し、ValidationAttribute として機能する DataTypeAttribute を作成したいと考えています。

私が理解しているように、DataTypeAttribute は ValidationAttribute を継承しているので、これが難しいとは思いませんでした。

ただし、検証することはできません。

これが私の属性です:

これが私のViewModelのプロパティです:

XXXAttribute の IsValid メソッドのデバッガーは、送信時にチェックされていないことを示しています。

誰かが私が間違ったことを指摘できますか? ありがとうございました。

0 投票する
9 に答える
167493 参照

c# - 電話番号検証 MVC

正規表現を使用して電話番号を検証し、無効な番号または電話番号が送信されたときにエラーを返そうとしています。

MVC コード:

C# コード:

ただし、入力ボックスには、送信された電話番号が無効であることを示すメッセージがユーザーに表示されません。

0 投票する
1 に答える
588 参照

asp.net-mvc-5 - クライアント側での私の検証属性

ページのビジネス ルールがあります。日付を含むコントロールは昇順である必要があります。つまり、Date1 に入力された値 < Date2 に入力された値 < Date3

私の属性:

クライアント側:

モデル:

とビュー(必要な部分):

また、結果 HTML の一部:

しかし、Date1='11/11/2010' と Date2='11/11/2009' を入力すると、デバッガーは、datecomparer メソッドが false を返しますが、バリデータ メッセージは表示されません。なぜ、どのように解決するのですか?