다음을 통해 공유


MVC: ObjectModelValidator가 ValidationVisitor.Validate의 새 오버로드 호출

ASP.NET Core 5.0에서 ValidationVisitor.Validate의 오버로드가 추가되었습니다. 새 오버로드는 다음 속성을 포함하는 최상위 수준 모델 인스턴스를 적용합니다.

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

ObjectModelValidatorValidationVisitor의 새 오버로드를 호출하여 유효성 검사를 수행합니다. 새 오버로드는 유효성 검사 라이브러리가 ASP.NET Core MVC의 모델 유효성 검사 시스템에 통합된 경우에만 관련이 있습니다.

자세한 내용은 GitHub 이슈 dotnet/aspnetcore#26020을 참조하세요.

도입된 버전

5.0

이전 동작

ObjectModelValidator가 모델 유효성 검사 중에 다음 오버로드를 호출합니다.

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

새 동작

ObjectModelValidator가 모델 유효성 검사 중에 다음 오버로드를 호출합니다.

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

변경 이유

이 변경 내용은 다른 속성 검사를 사용하는 CompareAttribute와 같은 유효성 검사기를 지원하기 위해 도입되었습니다.

.NET 5 이상을 대상으로 하는 경우 ObjectModelValidator를 사용하여 ValidationVisitor의 기존 오버로드를 호출하는 유효성 검사 프레임워크는 새 메서드를 재정의해야 합니다.

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

영향을 받는 API

ValidationVisitor.Validate