MVC : ObjectModelValidator appelle une nouvelle surcharge de ValidationVisitor.Validate
Dans ASP.NET Core 5.0, une surcharge de ValidationVisitor.Validate a été ajoutée. La nouvelle surcharge accepte l’instance de modèle de niveau supérieur qui contient des propriétés :
bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel);
+ bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container);
ObjectModelValidator appelle cette nouvelle surcharge de ValidationVisitor
pour effectuer la validation. Cette nouvelle surcharge est pertinente si votre bibliothèque de validation s’intègre au système de validation de modèle MVC ASP.NET Core.
Pour plus d’informations, consultez le problème GitHub dotnet/aspnetcore#26020.
Version introduite
5,0
Ancien comportement
ObjectModelValidator
appelle la surcharge suivante pendant la validation du modèle :
ValidationVisitor.Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel)
Nouveau comportement
ObjectModelValidator
appelle la surcharge suivante pendant la validation du modèle :
ValidationVisitor.Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container)
Raison du changement
Cette modification a été introduite pour prendre en charge les validateurs, comme CompareAttribute, qui s’appuient sur l’inspection d’autres propriétés.
Action recommandée
Les frameworks de validation qui s’appuient sur ObjectModelValidator
pour appeler la surcharge existante de ValidationVisitor
doivent remplacer la nouvelle méthode lors du ciblage de .NET 5 ou version ultérieure :
public class MyCustomValidationVisitor : ValidationVisitor
{
+ public override bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container)
+ {
+ ...
}