Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

Fluent Validation으로 C# 문자열 속성의 최소·최대 길이(MinLength/MaxLength) 유효성 검사하는 방법


MaxLength 유효성 검사기(MaximumLength)

Fluent Validation의 MaximumLength 규칙은 특정 문자열 속성의 길이가 지정된 값보다 길어지지 않도록 보장합니다. 이 규칙은 오직 문자열(string) 타입 속성에만 적용할 수 있습니다.

오류 메시지 작성 시 활용할 수 있는 형식 인자(format args)는 다음과 같습니다.

  • {PropertyName} : 유효성 검사를 수행 중인 속성의 이름
  • {MaxLength} : 허용되는 최대 길이
  • {TotalLength} : 실제 입력된 문자 수
  • {PropertyValue} : 해당 속성의 현재 값

MinLength 유효성 검사기(MinimumLength)

MinimumLength 규칙은 특정 문자열 속성의 길이가 지정된 값보다 짧아지지 않도록 보장합니다. 마찬가지로 문자열 타입 속성에만 사용할 수 있습니다.

  • {PropertyName} : 유효성 검사를 수행 중인 속성의 이름
  • {MinLength} : 허용되는 최소 길이
  • {TotalLength} : 실제 입력된 문자 수
  • {PropertyValue} : 해당 속성의 현재 값

예제 코드

다음 예제는 Person 모델의 FirstName 속성에 최대 7자 제한을, LastName 속성에 최소 5자 제한을 설정한 뒤 유효성 검사를 실행하고, 실패한 항목의 오류 메시지를 콘솔에 출력하는 전체 과정을 보여줍니다.

static void Main(string[] args)
{
    List<string> errors = new List<string>();

    PersonModel person = new PersonModel();
    person.FirstName = "TestUser444";
    person.LastName = "TTT";

    PersonValidator validator = new PersonValidator();
    ValidationResult results = validator.Validate(person);

    if (results.IsValid == false)
    {
        foreach (ValidationFailure failure in results.Errors)
        {
            errors.Add(failure.ErrorMessage);
        }
    }

    foreach (var item in errors)
    {
        Console.WriteLine(item);
    }
    Console.ReadLine();
}

public class PersonModel
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class PersonValidator : AbstractValidator<PersonModel>
{
    public PersonValidator()
    {
        RuleFor(p => p.FirstName).MaximumLength(7).WithMessage("MaximumLength must be 7 {PropertyName}");
        RuleFor(p => p.LastName).MinimumLength(5).WithMessage("MinimumLength must be 5 {PropertyName}");
    }
}

실행 결과

MaximumLength must be 7 First Name
MinimumLength must be 5 Last Name

실행 결과를 보면 FirstName은 11글자로 최대 길이인 7자를 초과했고, LastName은 3글자로 최소 길이인 5자에 미달했기 때문에 각각 설정한 오류 메시지가 출력됩니다. 이처럼 WithMessage()와 형식 인자를 조합하면 어떤 속성이, 어떤 길이 조건을 위반했는지 명확하게 안내하는 사용자 친화적인 오류 메시지를 손쉽게 만들 수 있습니다.