MVC: ObjectModelValidator memanggil kelebihan beban baru ValidationVisitor.Validate
Dalam ASP.NET Core 5.0, kelebihan beban ValidationVisitor.Validate ditambahkan. Kelebihan beban baru menerima instans model tingkat atas yang berisi properti:
bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel);
+ bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container);
ObjectModelValidator memanggil kelebihan beban ValidationVisitor
baru ini untuk melakukan validasi. Kelebihan beban baru ini berkaitan dengan jika pustaka validasi Anda terintegrasi dengan sistem validasi model ASP.NET Core MVC.
Untuk diskusi, lihat Masalah GitHub dotnet/aspnetcore#26020.
Versi yang diperkenalkan
5.0
Perilaku yang lama
ObjectModelValidator
memanggil kelebihan beban berikut selama validasi model:
ValidationVisitor.Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel)
Perilaku yang baru
ObjectModelValidator
memanggil kelebihan beban berikut selama validasi model:
ValidationVisitor.Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container)
Alasan untuk berubah
Perubahan ini diperkenalkan untuk mendukung validator, seperti CompareAttribute, yang mengandalkan inspeksi properti lain.
Tindakan yang direkomendasikan
Kerangka kerja validasi yang mengandalkan ObjectModelValidator
untuk memanggil kelebihan beban ValidationVisitor
yang ada harus mengambil alih metode baru saat menargetkan .NET 5 atau yang lebih baru:
public class MyCustomValidationVisitor : ValidationVisitor
{
+ public override bool Validate(ModelMetadata metadata, string key, object model, bool alwaysValidateAtTopLevel, object container)
+ {
+ ...
}