2012-10-12 3 views
1

유효성 검사 속성으로 장식 된 속성이있는 객체가 있습니다. 내 유효성 검사가 올바르게 작동하지만 이러한 특성을 기반으로 문자열 조작을 수행하는 추가 메서드가 필요합니다.객체의 유효성 검사 속성 읽기

내가 "이름"을 조작 할 수 있도록하려는
public class Pupil 
{ 
    /// <summary> 
    /// 
    /// </summary> 
    public Pupil() 
    { 

    } 

    [NotNullValidator] 
    [StringLengthValidator(0, 54, MessageTemplate = "Invalid value '{0}' for {1}, Max length: {5}")] 
    public string Name{ get; set; } 

    [NotNullValidator] 
    [StringLengthValidator(0, 2, MessageTemplate = "Invalid value '{0}' for {1}, Max length: {5}")] 
    public string Gender{ get; set; } 
} 

StringLengthValidator 속성과 인수에 따라 :

는 다음과 같은 목적을 고려하십시오. 예를 들어 :

///Takes a Pupil object in 
public static void DoManipulation(object value) 
    { 
     foreach(var property in value.GetType().GetProperties()) 
     { 
      if(property.Name == "Name") 
      { 
       var att = property.GetCustomAttributes(typeof(StringLengthValidator), false); 
       var length = ((StringLengthValidator)att[0]).UpperBound; 

      }    
     } 
    } 

는 "길이"의 값은 널 (null)로 다가오고보다는 54 어떻게 값을받을 수 있나요? 잘하면 감사합니다, 감사합니다.

+0

일을 만들어? –

+0

당신은 길이는 반드시 널되고 있습니까? 그것은 정수 속성이므로 강력하게 의심 스럽습니다. 길이를 설정하는 시점에 도달했는지 확인하십시오. –

답변

1

이 방법은 저에게 효과적입니다. 귀하가 생각하는 것과 동일한 StringLengthValidator 속성을 얻고 있습니까? (이 사용자 정의 클래스 또는 내 경우?

기업 리브의 하나입니다, 내가 ASP.NET MVC에서 사용자 정의 클래스 StringLengthValidator

enter image description here

+0

엔터프라이즈 라이브러리의 것을 사용하고 있습니다. – Adrian

+0

이 작동하지 않는 이유는 모르겠지만 사용자 지정 특성을 사용하면 제대로 작동합니다. 이 경우에는 사용자 정의 속성이 나에게 도움이되므로 제안 사항을 참조하십시오. – Adrian

0

이 모든 뒤에 아이디어는 값 (54)가 변경 될 수 있다는 것입니다, 맞죠? 그렇지 않으면 그냥 하드 코드 수 (54)

당신의 Web.config에 54을 추가하고 응용 프로그램에서 읽을 수 있도록 태그로의 Web.config에서 검증을 contol하는 방법에 대해 살펴 보자

Here 예를 들어, 첫 번째 접근 방식을 찾으십시오. Rule sets in Configuration

+0

"att"값이 null 인 경우 "att"가 null이고 따라서 "length"가 indexOutOfBounds 예외를 반환하는 경우 Diego, 위의 객체는 2 개의 속성 만 가지고 있지만 실제 객체는 6 개의 복잡한 유형을 가지고 있으며 각각 복잡한 속성이 있으므로 li 큰 구성 파일을 작성하는 대신 동적으로 수행하십시오. – Adrian

관련 문제