他の登録済みサービスを使用している可能性があるデータベースに対してフィールドを検証する必要があります。私はdocumentationを読んでいますが、実際の答えは見つかりませんでした。データベースに対するASP.NETコアのカスタム検証
コントローラーメソッドを呼び出すリモート検証がありますが、クライアント側のみであるため、JSを無効にすると検証が無効になります。検証属性を使用し、ModelState.IsValid
にうまく収められているカスタム検証もありますが、そのコンストラクタに依存性を注入することはできません。
私はthis questionを依存関係リゾルバと同様に回答していますが、それに関する有用な情報は見つかりませんでした。
私はそれを研究しようとしましたが、私が遭遇したのは依存症注射またはIServiceProvider
についてのもので、私にとってはうまくいきませんでした。ここに私の失敗した試みのいくつかは以下のとおりです。
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
//--1-------------------------------
var container = new ServiceContainer();
var _context = container.GetService<ApplicationDbContext>();
//----------------------------------
//--2-------------------------------
var services = new ServiceCollection();
IServiceProvider servicesProvider = services.BuildServiceProvider();
var _context = servicesProvider.GetService<ApplicationDbContext>();
//----------------------------------
return ValidationResult.Success;
}
各取り出さ_contextがnullでした。私は本当にここですべてのアイデアを使い果たしてしまったので、私はどんな助けにも感謝します。
[ここに表示](https://stackoverflow.com/a/29916075/264697)、[ここ](http://blog.ploeh.dk/2014/06/13)のように属性に依存関係を挿入しないでください。/passive-attributes /)と[ここ](https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=97)を参照してください。 – Steven