ASP.NET Core 5.0 では、 ValidationVisitor.Validate のオーバーロードが追加されました。 新しいオーバーロードは、プロパティを含む最上位レベルのモデル インスタンスを受け入れます。
bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel);
+ bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container);
ObjectModelValidator は、検証を実行するために、 ValidationVisitor のこの新しいオーバーロードを呼び出します。 この新しいオーバーロードは、検証ライブラリが Core MVC のモデル検証システム ASP.NET 統合されている場合に関係します。
詳細については、GitHub の 問題 dotnet/aspnetcore#26020 を参照してください。
導入されたバージョン
5.0
以前の動作
ObjectModelValidator は、モデルの検証中に次のオーバーロードを呼び出します。
ValidationVisitor.Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel)
新しい動作
ObjectModelValidator は、モデルの検証中に次のオーバーロードを呼び出します。
ValidationVisitor.Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container)
変更の理由
この変更は、他のプロパティの検査に依存する検証コントロール ( CompareAttribute など) をサポートするために導入されました。
推奨されるアクション
ObjectModelValidatorに依存してValidationVisitorの既存のオーバーロードを呼び出す検証フレームワークは、.NET 5 以降を対象とする場合に新しいメソッドをオーバーライドする必要があります。
public class MyCustomValidationVisitor : ValidationVisitor
{
+ public override bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container)
+ {
+ ...
}
影響を受ける API
.NET