> 백엔드 개발 > C++ > ASP.NET MVC에서 조건부 유효성 검사를 구현하는 방법은 무엇입니까?

ASP.NET MVC에서 조건부 유효성 검사를 구현하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-08 17:31:41
원래의
318명이 탐색했습니다.

How to Implement Conditional Validation in ASP.NET MVC?

ASP.NET MVC에서 조건부 유효성 검사 구현

ASP.NET MVC의 데이터 주석은 모델 속성에 대한 유효성 검사를 수행하는 편리한 방법을 제공합니다. 그러나 때로는 필드의 유효성이 다른 필드의 값에 따라 달라지는 조건부 유효성 검사 규칙을 구현해야 할 수도 있습니다.

예: 조건부 필수 항목

다음 시나리오를 고려해보세요. "IsSenior" 속성이 포함된 "Person" 모델과 설명이 포함된 "Senior" 속성이 있습니다. "IsSenior"가 true로 설정된 경우에만 "Senior.Description" 속성이 필수 필드가 되기를 원합니다.

데이터 주석 방법

데이터 주석만으로는 불가능합니다. 다음 코드는 이러한 제한 사항을 보여줍니다.

<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 = "*")]
    public string Description { get; set; }
}</code>
로그인 후 복사

IValidatableObject 메서드

ASP.NET MVC 3에는 IValidatableObject 인터페이스를 사용하여 조건부 유효성 검사를 위한 더 나은 솔루션이 도입되었습니다. 모델은 이 인터페이스를 구현하고 ValidationContext 매개 변수를 허용하는 Validate 메서드를 제공해야 합니다. 이 메서드는 사용자 지정 유효성 검사 논리를 수행하고 오류가 발견되면 ValidationResult 개체 컬렉션을 반환할 수 있습니다.

<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("必须提供描述。");
    }
}</code>
로그인 후 복사

IValidatableObject 인터페이스를 구현함으로써 이제 "IsSenior" 값을 기반으로 조건부 유효성 검사를 수행할 수 있습니다. "IsSenior"가 true인 경우 "Senior.Description" 속성이 필수 필드가 됩니다.

구문 개선(C# 6.0 이상)

C# 6.0 이상에서는 식 본문 멤버를 사용하여 Validate 메서드를 단순화할 수 있습니다.

<code class="language-csharp">public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) =>
    IsSenior && String.IsNullOrEmpty(Senior?.Description)
        ? new[] { new ValidationResult("必须提供描述。") }
        : Enumerable.Empty<ValidationResult>();</code>
로그인 후 복사

위의 방법을 통해 ASP.NET MVC에서 조건부 검증을 효과적으로 구현할 수 있습니다. Senior.Description에 안전하게 액세스하고 null 참조 예외를 방지하려면 null 조건부 연산자(?.)를 사용하세요.

위 내용은 ASP.NET MVC에서 조건부 유효성 검사를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿