MVC: ObjectModelValidator, ValidationVisitor.Validate için yeni bir aşırı yükleme çağırır

ASP.NET Core 5.0'da öğesinin ValidationVisitor.Validate aşırı yüklemesi eklendi. Yeni aşırı yükleme, özellikleri içeren en üst düzey model örneğini kabul eder:

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

ObjectModelValidator doğrulama gerçekleştirmek için bu yeni aşırı yüklemesini ValidationVisitor çağırır. Doğrulama kitaplığınız ASP.NET Core MVC'nin model doğrulama sistemiyle tümleştiriliyorsa bu yeni aşırı yükleme geçerlidir.

Tartışma için bkz. GitHub sorunu dotnet/aspnetcore#26020.

Sürüm kullanıma sunulmuştur

5.0

Eski davranış

ObjectModelValidator model doğrulaması sırasında aşağıdaki aşırı yüklemeyi çağırır:

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

Yeni davranış

ObjectModelValidator model doğrulaması sırasında aşağıdaki aşırı yüklemeyi çağırır:

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

Değişiklik nedeni

Bu değişiklik, CompareAttributegibi diğer özelliklerin incelenmesini kullanan doğrulayıcıları desteklemek için sunulmuştur.

'nin mevcut aşırı yüklemesini ValidationVisitor çağırmak için kullanan ObjectModelValidator doğrulama çerçevelerinin .NET 5 veya sonraki sürümleri hedeflerken yeni yöntemi geçersiz kılması gerekir:

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

Etkilenen API’ler

ValidationVisitor.Validate