2010-04-19 5 views
0

DataAnnotations가있는 모델의 유효성을 검사하려고하지만 DefaulModelBinder는 필수 속성 오류 메시지보다 우선하며 유효하지 않은 데이터 입력에 대해서는 오류 메시지를 사용하지 않습니다. 항상 '값'이 '속성 이름'에 대해 유효하지 않음을 보여줍니다.DataAnnotationsModelBinder with MVC2 RTM

다른 질문에서 MVC 2는 DataAnnotationsModelBinder를 사용하지만 MVC 2 바이너리에서는 어떤 클래스도 찾을 수 없다는 것을 알았습니다. MVC 미래를위한 소스를 다운로드하고 .Net 4.0 용으로 컴파일하기 위해 일부 소스를 변경했지만 컴파일에 성공했지만 호환성 문제가 있으며 예상대로 작동하지 않습니다.

도움이 필요합니다.

+0

이 프로젝트가 업그레이드 되었습니까? DefaultModelBinder는 System.Web.Mvc 네임 스페이스에 존재하며 MVC 2의 기본 바인더로 등록되어야합니다. 명시 적으로 Global.asax에 등록합니까? 그렇다면 이미 기본적으로 등록되어 있으므로 제거하십시오. – Jab

+0

실수로 죄송합니다. DefaultModelBinder를 DataAnnotationsModelBinder로 변경했습니다. – yang

+0

질문에 구매에 필요한 정보가 충분하지 않습니다. 위 질문에 답할 수 있습니까? 여전히 관련이 있습니다. 바인더에 관한 귀하의 Global.asax에는 무엇이 있습니까? 업그레이드 된 MVC1 앱 이었습니까? – Jab

답변

0

DefaultModelBinder에 입력 값을받는 모델 속성 유형으로 캐스팅하려고 할 때 예외가 throw되기 때문에 이러한 현상이 발생합니다.

수신 모델 의 등록 정보 유형으로 string을 사용하거나 IModelBinder을 구현하여 사용자 정의 모델 바인더를 만들고 검증을 처리 할 수 ​​있습니다.

+0

네, 저도 궁금해서 제 질문은 정확히 이것입니다. 어떻게 DataAnnotationsModelBinder를 MVC 2 RTM과 함께 사용할 수 있습니까? 모델 클래스에서 유효성 검사 특성을 사용할 때 DefaultModelBinder가 예상대로 작동하지 않습니다. – yang

5

DataAnnotationsModelBinder를 MVC 2 RTM과 함께 사용하지 마십시오. MVC 2 RTM의 DefaultModelBinder는 이미 DataAnnotationsModelBinder 샘플에있는 모든 논리를 포함합니다.

+0

그런 다음 [필수] 속성으로 지정한 오류 메시지가 표시되지 않는 이유는 무엇입니까? "x는 필수 입력란입니다"라는 메시지가 표시됩니다. 잘못된 유형의 경우 "x는 y에 유효한 값이 아닙니다"라는 모든 표준 기본 모델 바인더 오류 메시지를 표시합니다. [DataType] 오류 메시지 속성에 쓰는 오류 메시지를 나타내지 않아야합니까? – yang

+0

그렇습니다. 프로젝트에서 참조하는 System.ComponentModel.DataAnnotations의 버전은 무엇입니까? 버전 간의 불일치 일 수도 있습니다. – Jab

+0

선언은 어떻게 생겼습니까? 예상대로 작동하지 않는 샘플 모델 (속성 포함)을 보여줄 수 있습니까? – Levi