2011-11-21 3 views
1

오늘 멋진 아이디어가 나왔지만 어떻게해야하는지 잘 모르겠습니다.파생 클래스와 dataAnnotations를 사용한 소프트 유효성 검사

asp.net MVC3 C#에서 페이지 형식으로 페이지를 작성합니다. 각 페이지의 끝에 임시 영역으로 저장됩니다.

이제이 데이터는 열거 가능한 클래스가 몇 개있는 클래스로 이동하므로 상대적으로 복잡합니다.

이제 사용자는 유효성 검사없이 (보안을 제외하고) 원하는 것을 무엇이든 넣을 수 있기를 바랍니다. 원하는대로 던져 넣을 수 있지만, 나는 이것이 소프트 유효성을 갖기를 바랍니다.

유효성 검사에 메타 데이터를 사용하고 싶지만 엄격한 검증을 제공하므로 양식을 모델 (강하게 입력 된)로 사용하는 클래스에 넣을 수 없습니다. 그래서, 내가 생각하는 가장 좋은 방법은 폼에서 클래스에서 클래스를 파생시키는 것입니다 모든 데이터 주석을 던져 (어떻게 든 인터페이스를 적용 할 수있는 희망,하지만 난 가정합니다. 그렇지 않다)

그런 다음 사용자가 데이터베이스에 양식을 제출하려면 양식을 검토하고 유효성을 검사하기를 원합니다. 나는 병이 데이터 주석이없는 클래스를 dataAnnotations가있는 빈 데이터로 변환하고 데이터가 유효하지 않은 경우 발생하는 모든 오류는 화면에 나열하고 tell 할 수 있음을 알 수있다. 그들을 고칠 수 있습니다.

이제 내가 할 수있는 또 다른 사항은 어떻게 든 사용자가있을 때 양식의 유효성을 검사하기 위해 주석이 달린 클래스를 사용할 수 있다는 것입니다. 그래서 나는 "이 필드를 넣는 것이 좋습니다"라고 말할 수 있습니다. 오히려 "이 필드는 비어있을 수 없습니다".

그래서, 결론 :

  1. 그것은 그렇다면, 어떻게, 온 오프 인터페이스를 설정 할 수 있습니까?
  2. 어떻게 ClassB가가를 ClassA에서 파생 dataAnnotations는
  3. 변환하는 동안 (2 연속), 내가 어떻게 모든 데이터 오류를 포착하고이를 나열합니다 내가 부드러운
  4. 오프 확인할 수있는 방법을 사용합니다 ClassB가로를 ClassA를 변환 할 것 모델이 classA 인 양식의 클래스 B

나는 이것이 가능하기를 바랍니다. 그것을하는 가장 깨끗한 방법 같다. 누구든지이 일을하는 더 좋은 방법을 생각할 수 있다면, 나는 모든 귀 ... 또는 눈입니다.


업데이트 dataAnnotations가에 잘못된 데이터를 넣고에서 저를 방해하는 인상에서 1 임. 그러나 나는 순간에 몇 가지 테스트를하고있어, 그것은 내가 프로그래밍 방식으로 잘못된 데이터를 적용 할 수 있어요 보인다 . 필수 입력란에 null이 표시됩니다. 그렇다면 데이터 주석은 페이지의 유효성 검사에만 적용됩니까? 그렇다면 내 전체 질문을 무시하십시오.


업데이트 2 사람이

답변

0

난 당신이 MVC에서 검증 프레임 워크와 함께이 작업을 수행 할 수 있다고 생각하지 않습니다 기여할 수있는 경우 임은 여전히 ​​대답을 찾고. 유효성 검사는 이진 연산입니다. 입력이 유효하거나 유효하지 않습니다.유효성 검사 과정에서 성공 또는 실패를 나타내는 데 사용되는 ValidationResult 클래스에는 '미정'회원 (용어 사용)이 없으므로 예 또는 아니요입니다.

그렇다면 전체 유효성 검사 프로세스를 제어 할 수 있으므로 자신 만의 데이터 주석 속성 집합을 정의하고 컨트롤러에서 '경고'라고 가정 한 내용을 테스트하고 그에 따라 대응할 수 있습니다. 어쩌면 '이 입력란에 데이터를 입력하는 것이 좋습니다'와 같은 문자열을 표시하는 알림 영역을 사용하는 것일 수도 있습니다.

이것은 내가 사용하지 않는 눈에 거슬리지 않는 클라이언트 측 유효성 검사를 사용하지 않는다고 가정합니다. 피할 수있는 방법. 컨트롤러에서 ModelState 변수를 사용하여 IsValid 테스트를 통과 할 수있는 방법으로 얘기하고 있습니다.

+0

관찰 해 주셔서 감사합니다. 좋은 것입니다 ... 나는 검증이 바이너리 연산이라는 것을 알고 있습니다. 나는 그것이 진실인지 거짓인지를 확인하는 것을 더보고 있지만 여전히 제출할 수 있습니다. – MrJD

관련 문제