0

다른 필드에 종속적 인 데이터 형식 유효성 검사 을 수행하는 데 문제가 있습니다. 여기에서 찾은 대부분의 예제는 다른 필드의 값을 기반으로 필드를 만들거나 만들지 않은 것입니다 (MaidenNameIsMarriedtrue 인 경우에만 필요합니다).다른 필드에 종속 된 필드에서 데이터 형식 유효성 검사를 수행하려면 어떻게합니까?

내 모델

public class AttributeValuesModel 
{ 
    public IList<AttributeModel> Values {get; set;} 
} 

public class AttributeModel 
{ 
    [Required] 
    public string AttributeName {get; set;} 

    [Required] 
    public string AttributeValue {get; set;} 

    [Required] 
    public int DataTypeId {get; set;} 
} 

내가 뭘하고 싶은 DataTypeId의 값을 기준으로의 AttributeValue에 대한 사용자 입력의 유효성을 검사하는 것입니다. 명확성을 위해 사용자에게보기까지 표시하기 전에 DataTypeId의 값을 알 수 있습니다.

//Possible values for DataTypeId are 
    //1 for decimal 
    //2 for dates 
    //3 for integer 

이것이 가능합니까?

답변

0

고유 한 유효성 검사 속성을 사용하는 것이 그리 어렵지 않습니다. 몇 시간 전에 구현했습니다. 이 속성으로 장식 된 속성보다 다른 속성의 값이 작은 지 여부를 확인합니다.

하나의 가지가 있습니다. 오류 메시지 형식은 리소스 클래스 속성 (ValidatorResource.SmallerThan)에 정의되어 있으므로 플러그 할 수 없습니다. 필요하지 않았습니다. 그러나, 나는 아직도 그것이 당신을위한 좋은 출발점이 될 수 있다고 생각합니다.

1

ASP.NET MVC 용 FoolProof 유효성 검사 확장을 살펴보십시오. 여기에는 [RequiredIf]과 같은 조건부 유효성 검사를 수행하는 데 사용할 수있는 유효성 검사 특성이 포함되어 있습니다.

더욱 강력한 유효성 검사 라이브러리 (내가 사용하고 권장하는 라이브러리)는 FluentMVC입니다. 유효성 검사 데이터 주석과는 달리이 라이브러리를 사용하면 선언적 대신 명령형 유효성 검사를 수행 할 수 있습니다. 이를 통해 임의의 복잡성과 종속 속성 간의 규칙을 표현할 수 있습니다.

+0

내 질문을 게시하기 전에 FoolProof를 본 적이 있지만 데이터 형식 유효성 검사를 수행하지 않는다고 생각합니다. 그들이 가지고있는 가장 가까운 것은'[RequiredIfRegExMatch]'와'[RequiredIfNotRegExMatch]'입니다. 데이터 타입의 유효성 검사를 수행하기 위해 한계를 조금 넘습니다. 모델 템플릿 섹션 (페이지 하단)에'DataType'에 대한 언급이 있으므로 FluentMVC를 확인하겠습니다. –

+0

그런 다음 FluentMVC를 사용하면 모든 기쁨과 힘을 얻습니다. –

+0

'FluentMVC'를 사용했다고 말했기 때문에 지금과 비슷한 상황에서 내장형'DataType' 템플릿을 사용했는지 궁금합니다. 데이터 형식 유효성 검사가 다른 필드에 대한 종속성이 충족 될 때만 발생한다는 것을 의미합니다. –