私はMVCアプリに取り組んでおり、私が書いたモデルコードの一部が次のように展開されています。
public class SomeModel
{
public int? CodeA { get; set; }
public int? CodeB { get; set; }
[RequiredIf("CodeA", 3, ErrorMessage = "(required for [Something]!)")]
[RequiredIf("CodeB", 99, ErrorMessage = "(required for [Other]!)")]
public string Foo { get; set; }
// SNIP: Unimportant details
}
注:RequiredIf()
私が使用している実装はここにあります。
ユーザーが特定の状況で編集できるプロパティFooを、2つのRequiredIf()属性で装飾しました。記入が必要な場合が2つあります。他のすべての状況では、フロントエンドはユーザーの入力を解析し、舞台裏でユーザーの入力を入力します。
質問:1つのケース(CodeA = 3、CodeB = 4など)のみが満たされ、ユーザーが何も入力しなかったために否定的な検証が発生した場合でも、モデルは無効としてマークされ、ErrorMessageがログに記録されますか?または、Code B条件が満たされているので、CodeAが必要な(入力されていない)状態にある場合に実行される検証をオーバーライドしますか?
別の質問方法:検証は追加的ですか、それとも一度に1つの検証のみの結果に暗黙の制限がありますか?