Udostępnij za pośrednictwem


MVC: ObjectModelValidator wywołuje nowe przeciążenie elementu ValidationVisitor.Validate

W ASP.NET Core 5.0 dodano przeciążenie ValidationVisitor.Validate elementu . Nowe przeciążenie akceptuje wystąpienie modelu najwyższego poziomu zawierające właściwości:

  bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel);
+ bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container);

ObjectModelValidator wywołuje to nowe przeciążenie , ValidationVisitor aby przeprowadzić walidację. To nowe przeciążenie jest istotne, jeśli biblioteka walidacji jest zintegrowana z systemem weryfikacji modelu platformy ASP.NET Core MVC.

Aby zapoznać się z dyskusją, zobacz problem z usługą GitHub dotnet/aspnetcore#26020.

Wprowadzona wersja

5,0

Stare zachowanie

ObjectModelValidator wywołuje następujące przeciążenie podczas walidacji modelu:

ValidationVisitor.Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel)

Nowe zachowanie

ObjectModelValidator wywołuje następujące przeciążenie podczas walidacji modelu:

ValidationVisitor.Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container)

Przyczyna wprowadzenia zmiany

Ta zmiana została wprowadzona w celu obsługi modułów sprawdzania poprawności, takich jak CompareAttribute, które polegają na inspekcji innych właściwości.

Struktury weryfikacji, które polegają na ObjectModelValidator wywołaniu istniejącego ValidationVisitor przeciążenia, muszą zastąpić nową metodę w przypadku określania wartości docelowej dla platformy .NET 5 lub nowszej:

public class MyCustomValidationVisitor : ValidationVisitor
{
+  public override bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container)
+  {
+    ...
}

Dotyczy interfejsów API

ValidationVisitor.Validate