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.
Önerilen eylem
'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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin