2010-05-25 2 views
0

주어진 값이 고유한지 아닌지를 검사하는 사용자 지정 ValidationAttribute를 작성하려고합니다.값이 변경된 경우에만 유효성 검사 속성이 적용됩니까?

문제는 편집 화면에서 사용자가 실제로 값을 변경 했으므로 false 오류가 발생한다는 것입니다.

값이 실제로 변경되었는지 여부를 내 속성에서 확인하는 방법이 있습니까? 또는 값이 변경된 경우에만 속성을 트리거 할 수 있습니까?

이 요구 사항이 속성에 속하지 않는다고 생각하는 중입니까?

+0

처음 두 문장은 좋지 않습니다. 변경 추적과 관련하여 고유성이 무엇인지 분명히 할 수 있습니까? – jfar

+1

그는 사용자 1이 이메일 주소가 [email protected]이고 사용자가 프로필을 업데이트하는 경우 전자 메일 주소 (예 : 일러스트레이션 만 해당)가 여전히 고유한지 확인하려고합니다. 그러나 사용자가 전자 메일 주소를 변경하지 않으면 [email protected]이 업데이트중인 사용자를 위해 이미 데이터베이스에 있으므로 고유 한 검사가 실패합니다. – Tommy

답변

1

ValidationAttibute를 말하면 DataAnnotations를 사용하고 싶습니까? 그렇다면이 모든 것이 적용됩니다. 그렇지 않으면 미안하지만, 나는 오해하고 오직이 부분 만 할 것입니다.

나는 적어도 레코드의 고유 키를 사용하여 리포지토리 또는 BLL에서이 작업을 수행하는 것이 가장 좋습니다. 적어도이 작업을 수행 한 방법입니다. 레코드의 이전 값을 가져 와서 변경되었는지 확인하십시오. 그들이 변경된 경우 고유성 검사를 실행하십시오.

이 논리를 ValidationAttribute에 넣을 수 있다면 더 많은 권한을 얻을 수 있지만 validationAttribute가 주위를 둘러 볼 방법이 있기 때문에 가장 좋은 방법인지는 확실하지 않습니다. 이러한 특성을 이해 했으므로 모델을 검증하는 유일한 방법이 아닌 비즈니스 논리 유효성 검사에 대한 보충 자료로 사용해야합니다.

See here for more info on DataAnnotations

편집 : 충분한 페어, 지금은이 링크를 확인 :) 도움이 대답 할 수 있는지 보자, 그것은 모든 테이블에있는 모든 속성에 대한 고유성 검사에 대한 코드입니다. 꽤 심층적 인 LINQ to SQL이 있지만 잘 작동하는 것처럼 보입니다. <Required> 또는 <StringLenght> 속성을 사용하는 것과 마찬가지로 속성을 꾸밀 수 있어야합니다.

ASP.NET Forums

+0

고유 한 검사가 모델에도 적용되지만 자동 클라이언트 측 검사를 활용하고 한 곳에서 내 비즈니스 요구 사항 규칙을 적용 할 수 있도록 특성 (또는 데이터 주석)을 만들고 싶습니다. –