Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In ASP.NET Core 5.0 wurde eine Überladung des ValidationVisitor.Validate Elements hinzugefügt. Die neue Überladung akzeptiert die Modellinstanz der obersten Ebene, die Eigenschaften enthält:
bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel);
+ bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container);
ObjectModelValidator ruft diese neue Überladung von ValidationVisitor
zur Durchführung der Validierung auf. Diese neue Überladung ist relevant, wenn Ihre Validierungsbibliothek in ASP.NET Core MVC Modellüberprüfungssystem integriert ist.
Eine Diskussion finden Sie unter GitHub issue dotnet/aspnetcore#26020.
Eingeführte Version
5.0
Altes Verhalten
ObjectModelValidator
ruft während der Modellüberprüfung die folgende Überladung auf:
ValidationVisitor.Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel)
Neues Verhalten
ObjectModelValidator
ruft während der Modellüberprüfung die folgende Überladung auf:
ValidationVisitor.Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container)
Grund für Änderung
Diese Änderung wurde eingeführt, um Validatoren, wie CompareAttribute, die auf die Überprüfung anderer Eigenschaften angewiesen sind, zu unterstützen.
Empfohlene Aktion
Validierungsframeworks, die ObjectModelValidator
benötigen, um die vorhandene Überladung von ValidationVisitor
aufzurufen, müssen die neue Methode überschreiben, wenn .NET 5 oder höher als Zielversion verwendet wird:
public class MyCustomValidationVisitor : ValidationVisitor
{
+ public override bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container)
+ {
+ ...
}