IValidatableObject
ASP.NET MVC의 조건부 유효성 검사 기능을 사용하면 다른 모델 속성에 의존하는 유효성 검사 규칙을 정의할 수 있습니다. 이는 특정 상황에서만 특정 필드의 유효성 검사가 필요한 경우 매우 유용합니다.
Person
, Name
을 포함하는 IsSenior
모델과 Senior
속성이 있는 중첩된 Description
클래스를 예로 들어 보겠습니다. Senior.Description
이 참인 경우에만 IsSenior
가 필요합니다.
데이터 주석을 사용하는 모델은 다음과 같습니다(더 간단하지만 유연성이 떨어지는 접근 방식).
<code class="language-csharp">public class Person { [Required(ErrorMessage = "*")] public string Name { get; set; } public bool IsSenior { get; set; } public Senior Senior { get; set; } } public class Senior { [Required(ErrorMessage = "*")] // This validation is not conditionally applied yet. public string Description { get; set; } }</code>
해당 뷰 스니펫(예시):
<code class="language-html">@Html.LabelFor(m => m.Name) @Html.EditorFor(m => m.Name) @Html.ValidationMessageFor(m => m.Name) @Html.LabelFor(m => m.IsSenior) @Html.EditorFor(m => m.IsSenior) @Html.ValidationMessageFor(m => m.IsSenior) @Html.LabelFor(m => m.Senior.Description) @Html.EditorFor(m => m.Senior.Description) @Html.ValidationMessageFor(m => m.Senior.Description) </code>
IValidatableObject
보다 강력한 조건부 유효성 검사를 위해 ASP.NET MVC는 IValidatableObject
인터페이스를 제공합니다. Validate
메서드를 구현하면 모델의 전체 상태를 기반으로 유효성 검사 논리를 정의할 수 있습니다.
Person
을 사용하여 개선된 IValidatableObject
모델은 다음과 같습니다.
<code class="language-csharp">public class Person : IValidatableObject { public string Name { get; set; } public bool IsSenior { get; set; } public Senior Senior { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (IsSenior && string.IsNullOrEmpty(Senior?.Description)) yield return new ValidationResult("Description is required for senior citizens."); } }</code>
이 접근 방식은 유효성 검사 규칙에 대한 더 큰 유연성과 제어 기능을 제공합니다. 포괄적인 세부 정보를 보려면 관련 Microsoft 설명서를 참조하세요("IValidatableObject" 및 ASP.NET MVC 검색). 위의 예에서는 안전성을 높이기 위해 null 조건부 연산자(?.
)를 활용합니다.
위 내용은 데이터 주석 및 IValidatableObject를 사용하여 ASP.NET MVC에서 조건부 유효성 검사를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!