[解決済み] データアノテーションを用いた条件付き必須プロパティ
2023-07-13 23:34:39
質問
このようなクラスがあります。
public class Document
{
public int DocumentType{get;set;}
[Required]
public string Name{get;set;}
[Required]
public string Name2{get;set;}
}
ここで
[Required]
データアノテーションを
Name
と
Name2
プロパティがある場合、すべて問題なく、もし
Name
または
Name2
が空であれば、バリデーションはエラーを投げます。
しかし、私は
Name
フィールドが必要な場合のみ
DocumentType
が 1 に等しい場合のみ必要です。
と
Name2
の場合のみ必要です。
DocumentType
が2に等しい場合のみ必要です。
public class Document
{
public int DocumentType{get;set;}
[Required(Expression<Func<object, bool>>)]
public string Name{get;set;}
[Required(Expression<Func<object, bool>>)]
public string Name2{get;set;}
}
が、できないことは分かっています、エラーになります。この要件はどうすればいいのでしょうか?
どのように解決するのですか?
アウトオブザボックスでは、まだ不可能だと思います。
しかし、私はこれを見つけた
Mvc.ValidationToolkitに関する有望な記事です。
(また
はこちら
のように、残念ながら
これ
はアルファ版しかありませんが、このコードから必要なメソッドを抜き出して独自に統合することも可能でしょう)
のように、このコードには良い音色の属性
RequiredIf
という属性が含まれており、これはまさにあなたの原因と一致するようです。
- からプロジェクトをダウンロードし リンクされた zip をダウンロードし、それをビルドします。
- ビルドフォルダからビルドされたDLLを取得し、使用しているプロジェクトで参照します。
-
残念ながら、これは MVC への参照も必要なようです (最も簡単な方法は、VS で MVC プロジェクトを開始するか、または
install-package Microsoft.AspNet.Mvc
) -
を使いたいファイルに
using Mvc.ValidationToolkit;
-
というように書くと
[RequiredIf("DocumentType", 2)]
あるいは[RequiredIf("DocumentType", 1)]
のいずれでもない場合、オブジェクトは有効です。name
またはname2
が指定されている限りDocumentType
が 1 または 2 でない限り
関連
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み] リフレクションを使用して文字列からプロパティ値を取得する
-
[解決済み] usingディレクティブはネームスペースの内側と外側のどちらを使うべきですか?
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] List<T>をオブジェクトのプロパティでソートする方法
-
[解決済み] フィールドとプロパティの違いは何ですか?
-
[解決済み] 特定のプロパティに対するLINQのDistinct()
-
[解決済み] ラムダ式からプロパティ名を取得する
-
[解決済み】radio入力フィールドで "required "属性を使用する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】C# - パスに不正な文字がある場合
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み] UnityでOnCollisionEnterが呼ばれない
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】別のスレッドがこのオブジェクトを所有しているため、呼び出し側のスレッドはこのオブジェクトにアクセスできない