web-dev-qa-db-ja.com

ASP.NET Coreでカスタムモデル検証を実装するにはどうすればよいですか?

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依存関係。

26

ASP.NET Coreでカスタムモデル検証を行うには、2つの方法があります。

  • ValidationAttributeからサブクラス化されたカスタム属性。これは、属性を持つ特定のモデルpropertyにカスタムビジネスロジックを適用する場合に便利です。
  • クラスレベルの検証のためのIValidatableObjectの実装。モデル全体の検証を一度に行う必要がある場合は、代わりにこれを使用します。

ドキュメント には両方の例があります。あなたの場合、IValidatableObjectがおそらく最良のアプローチでしょう。

24
Nate Barbettini