問題タブ [data-annotations]

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 投票する
5 に答える
35765 参照

asp.net - ASP.NETDataAnnotations検証の単体テスト

モデルの検証にDataAnnotationsを使用しています。

私のコントローラーでは、ModelStateの値をチェックしています。これは、私のビューから投稿された無効なモデルデータに対して正しくfalseを返します。

ただし、コントローラーアクションの単体テストを実行すると、ModelStateは常にtrueを返します。

テストでモデル検証を設定するために何か特別なことをする必要がありますか?

ありがとう、

ベン

0 投票する
3 に答える
2341 参照

c# - モデルレベルの検証

Brad Wilsonの投稿で述べられているように、「モデルレベル」の検証をどのように達成するのでしょうか。

最後に、検証で複数のプロパティにアクセスできるようにする場合は、モデルレベルの検証にします(単一の個別のプロパティ値ではなく、モデル全体をモデルパラメーターとして取得するようにします)。

http://forums.asp.net/p/1457591/3650720.aspxから

私は次のことをしようとしました

ブレークポイントはトリガーなしのIsValidオーバーライドに配置され、コードは続行されます。MyCustomValidation作業のコンストラクターのブレークポイントですがMyCustomValidation、その後は何もありません。

これは何model-level validationを指しているのではありませんか?

アップデート:

dirtygopherのhttp://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.htmlへのリンクは、モデルの検証を示しています。唯一の問題は、検証属性が配置されていることです。親クラスの子プロパティ。

validation-attributes上記の例で示したように、クラスに直接配置する方法を探しています。

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

jquery - ASP.NETMVCでの選択的なクライアント側の検証


MVC 2組み込み検証システムを使用して クライアント側の選択的検証を実装するにはどうすればよいですか?
フォームのタイトルに「子供はいますか?」というチェックボックスがあるとします。
下のテキストボックスをオンにすると、それが必要になります
(「子の数」というタイトルのテキストボックス)。

0 投票する
3 に答える
10338 参照

.net - 標準のDataAnnotationsエラーメッセージを置き換える方法

System.ComponontModel.DataAnnotationsを使用してモデルオブジェクトを検証しています。それぞれにErrorMessage属性を提供したり、サブクラス化したりせずに、標準属性(RequiredおよびStringLength)が生成するメッセージを置き換えるにはどうすればよいですか?

0 投票する
6 に答える
6119 参照

primary-key - 主キーを使用する理由

テーブル内の一意の列を識別する以外に使用される主キーは何ですか? これは、列に対して自動インクリメント制約を使用するだけでは実現できませんか? PK と FK が異なるテーブルを関連付けるために使用されることは理解していますが、結合だけではこれを行うことはできませんか?

基本的に、主キーを使用して結合するときのパフォーマンスを向上させるために、データベースは何をしていますか?

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

asp.net-mvc - クッキーの問題から引っ張るカスタム Model-Binder?

私は次のことをしようとしています。

デフォルトのモデル バインダーを使用して、クエリ文字列値からオブジェクトをバインドします。
それが失敗した場合は、Cookie 値からオブジェクトをバインドしようとします。

ただし、このオブジェクトでデータ注釈を使用しており、次の問題があります。

  1. クエリ文字列パラメーターがない場合、既定のモデル バインダーは必須フィールドの検証エラーを登録しません。プロパティ自体がクエリ文字列コレクションに含まれていない場合、これらのバリデーターも起動しないようです。この動作を変更するにはどうすればよいですか? クエリ文字列に含まれていない場合、必須フィールドをエラーにしたいと思います。
  2. モデルの検証エラーが発生した場合は、Cookie からモデルを読み込み、オブジェクトを再検証したいと考えています。自分で入力したオブジェクトをモデル バインダーで検証する方法がわかりません。

これが私がこれまでに持っているものです。

これを適切に行う方法についての助けをいただければ幸いです。

0 投票する
3 に答える
2236 参照

c# - asp.NET MVC 2 DataAnnotations UpdateModel検証

TryUpdateModel を使用して、DataAnnotations を使用して asp.NET MVC 2 RC2 のモデルに検証を追加しようとしています。

これによりモデルが更新されますが、検証は呼び出されません。フォーム値プロバイダーを使用せずに、(検証メタデータを持つ) ProvisioningObject を直接使用して、TryUpdateModel (ユーザーの直接型) も使用してみましたが、役に立ちませんでした。

例をグーグルで検索すると、パラメーターを介してバインドすることで DataAnnotations を使用する方法しか得られません

更新シナリオが嫌いです。

ヒントや解決策はありますか?

編集 私のオブジェクトは、WCF サービスから自動生成されたオブジェクトです。

DataAnnotations を追加できるようにパーシャルを作成しました。どうやら継承をサポートしていないため、TryUpdateModel を 3 回呼び出します。これは、DataAnnotations の問題でもあると思います。ProvisioningObject の検証属性を指定すると、バインディングはそのような継承されたものを探しません。

UserMetadata に DisplayName のメタデータを追加すると、期待どおりに動作しますが、それは非常に冗長に思えます。また、TryUpdateModel が適切に動作するように、継承したすべてのインターフェイスをコピーして貼り付ける必要があることも意味します。

検証属性をコピーして継承されたクラスに貼り付ける必要のない方法を探していると思います。

0 投票する
12 に答える
46995 参照

asp.net-mvc - DataAnnotations を使用して ASP.NET MVC 2 でブール値/チェックボックスを処理する方法は?

私はこのようなビューモデルを持っています:

ビューのマークアップ コード:

結果:

検証は実行されません。bool は値型であり、null になることはないため、ここまでは問題ありません。しかし、AgreesWithTerms をヌル可能にしても、コンパイラーが叫ぶため、機能しません。

「テンプレートは、フィールド アクセス、プロパティ アクセス、単一次元配列インデックス、または単一パラメーターのカスタム インデクサー式でのみ使用できます。」

それで、これを処理する正しい方法は何ですか?

0 投票する
2 に答える
1497 参照

asp.net-mvc - UK Datetime フィールドのデータ注釈範囲

データ注釈を使用して DateTime フィールドを検証したいのですが、問題が発生しています。MSDN のドキュメント ( http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.rangeattribute.aspx ) によると、次のようにする必要があります。

ただし、これは入力した日付を無効としてマークします!

最初は、英国の日付を取得していないと思いました (2004 年 2 月 26 日を試したとき) が、2004 年 2 月 2 日などの日付を使用することさえできません。

私は MVC2 内で dataannotations を使用しており、クライアント側の検証には MicrosoftAjax フレームワークを使用しています。

助言がありますか?

ありがとう

0 投票する
3 に答える
623 参照

asp.net-mvc - 検証ルールは常にモデル レベルで適用する必要がありますか?

新しい ASP.NET MVC 2 検証機能を使用すると、ドメイン モデル オブジェクトのプロパティを、DataAnnotations有効な値の条件を説明する属性で修飾できます。はこれを認識しており、コントローラー アクションが呼び出される前に、それに応じDefaultModelBinderて入力します。ModelState.IsValid検証ルールはドメイン モデル内で定義されるため、これはモデル レベルの検証と見なされます。スコット・ガスリーは次のように書いています

Person オブジェクト内にルールを実装する利点は、Person オブジェクトを使用するアプリケーション内の任意のシナリオを介して検証が確実に実施されることです [...]

厳密に言えば、すべてのアクション メソッドがプロパティをチェックし、その値に応じて異なる動作をする必要があるため、私の意見では、ルールは実際には強制されていません。ModelState.IsValidまた、ルールはモデルで定義されますが、すべてのモデル バインダーが存在する場所であるため、プレゼンテーション レイヤーに適用されます。しかし、これは私が言葉の選択にうるさいだけだと思います(または私が単に間違っているだけです)。

しかし、ドメイン モデル レベルで検証ルールを適用する場合はどうでしょうか。Steven Sanderson は、xVal 検証フレームワークに関する投稿でこのアプローチを使用しており、次のように書いています。

現在、モデル層は、すべての検証およびビジネス ルールを満たさない予約を拒否することで、独自の有効性を強化しています。

彼の例では、コードを使用して無効な予約を行おうとすると、「予約マネージャー」(モデル内に存在する) が特別なビジネス ルールの例外をスローします。したがって、事前に予約の有効性を確認したかどうかに関係なく、消費コードが無効な予約を配置することは不可能ModelState.IsValidです (またはその他のカスタム構造を介して)。

だから私の質問は:

モデルレベルで定義された検証ルールがあると仮定すると、モデル内でも適用する必要がありますか?

(私はドメイン駆動設計の概念にまったく慣れていないので、正しい用語を正確に使用していない場合はご容赦ください。)