데이터 주석을 사용하여 ASP.NET MVC에서 여러 속성의 결합된 길이를 확인하세요
ASP.NET MVC에서는 StringLength
주석을 사용하여 단일 속성의 길이를 확인하는 것이 일반적입니다. 그러나 여러 속성의 결합된 길이를 확인해야 하는 상황이 있습니다. 이 문서에서는 데이터 주석을 사용하여 이 목표를 달성하기 위한 MVC 호환 접근 방식을 살펴봅니다.
사용자 정의 유효성 검사 속성
여러 속성의 결합된 길이를 검증하려면 사용자 정의 검증 속성을 생성할 수 있습니다. 예를 들면 다음과 같습니다.
<code class="language-csharp">public class CombinedMinLengthAttribute : ValidationAttribute { public CombinedMinLengthAttribute(int minLength, params string[] propertyNames) { this.PropertyNames = propertyNames; this.MinLength = minLength; } public string[] PropertyNames { get; private set; } public int MinLength { get; private set; } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { var properties = this.PropertyNames.Select(validationContext.ObjectType.GetProperty); var values = properties.Select(p => p.GetValue(validationContext.ObjectInstance, null)).OfType<string>(); var totalLength = values.Sum(x => x?.Length ?? 0) + (value?.ToString()?.Length ?? 0); //处理空值情况 if (totalLength < MinLength) { return new ValidationResult(FormatErrorMessage(validationContext.DisplayName)); } return ValidationResult.Success; } }</code>
사용방법
이 사용자 정의 속성을 사용하려면 이를 사용하여 뷰 모델에서 속성을 장식할 수 있습니다.
<code class="language-csharp">public class MyViewModel { [CombinedMinLength(20, "Bar", "Baz", ErrorMessage = "Foo, Bar 和 Baz 属性的组合最小长度应大于 20")] public string Foo { get; set; } public string Bar { get; set; } public string Baz { get; set; } }</code>
모델이 검증되면 사용자 정의 속성의 IsValid
메서드가 호출되고 지정된 속성의 결합 길이가 데코레이팅된 속성 값과 함께 지정된 최소 길이에 대해 검증됩니다. 개선된 코드는 null 값 처리를 추가하고 NullReferenceException
가능성을 방지합니다.
위 내용은 데이터 주석을 사용하여 ASP.NET MVC에서 여러 속성의 결합된 길이를 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!