ASP.NET MVCの以前のバージョンでは、モデルにカスタム検証を追加する方法は、IValidatableObject
を実装し、独自のValidate()
メソッドを実装することでした。例として:
public class BestModelEver : IValidatableObject {
public DateTime? Birthday { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) {
if (Birthday.HasValue) {
yield return new ValidationResult("Error message goes here");
}
}
}
これは、ASP.NET Coreのモデルにカスタム検証を追加する推奨される方法ですか? IValidatableObject
を使用すると、System.ComponentModel.DataAnnotations
依存関係。
ASP.NET Coreでカスタムモデル検証を行うには、2つの方法があります。
ValidationAttribute
からサブクラス化されたカスタム属性。これは、属性を持つ特定のモデルpropertyにカスタムビジネスロジックを適用する場合に便利です。IValidatableObject
の実装。モデル全体の検証を一度に行う必要がある場合は、代わりにこれを使用します。ドキュメント には両方の例があります。あなたの場合、IValidatableObject
がおそらく最良のアプローチでしょう。