2012-03-22 3 views
4

일부 조건부 유효성 검사에는 'RequiredIf'표준 속성이 있습니다.
내 양식과 모델이 상당히 커서이 모델은 63 개의 속성이 있으며 대부분이 유효성이 검사됩니다.MVC3 게으른 모델 바인딩 /로드

어쨌든 에 모델이로드되는 동안 유효성 검사가 실행되는 동안 문제가 발생합니다.
'RequiredIf' 'IsValid'메서드 안에 코드의 첫 번째 줄에 중단 점을 넣으면 내 모델에 많은 Null 값이 있음을 알 수 있습니다. F5 키를 눌러 (다음 속성의 유효성 검사를 계속하기 위해) 여전히 많은 null이 있습니다. F5를 약 5 번 더 누르면 모델이 마술처럼 내가 게시 한 데이터로 채 웁니다.

첫 번째 5-6 유효성 검사가이 때문에 엉망이되고 있습니다. 모델로드 방법에 대해 누구나 알고 있습니까? 사용자 지정 모델 바인딩을 사용하고 있지 않습니다.

+0

엔티티 관계를 모두로드하기를 원하십니까? 아니면 이러한 속성은 그냥 기본 유형입니까? –

+0

이들은 모두 기본 유형입니다. 로딩되는 대부분은 문자열입니다. – Peanut

답변

3

해결책은 표준 모델 바인딩을 완전히 '오버라이드'하는 것입니다. 직접 모델 바인더를 만들고 전체 모델을 수동으로로드 한 다음 나중에 모든 모델 유효성 검사를 실행하십시오. 나는 여전히 일부이 표준 모델 바인더에서 "이봐, 전체 모델을로드하기 전에로드"라고 말하는 방식으로 확신하지만, 지금은 내 자신을 만들어야했습니다.

1

페이지 및 모델을 재 설계하고 데이터 모델을 분할하고 여러 개의 작은 모델에서 여러 부분보기를 사용하여 볼 수 있습니다. 이렇게하면 모델을보다 효과적으로 관리 할 수 ​​있습니다. 그 모델에 대한 테스트를 작성한다고 상상해보십시오. 63 속성이 너무 많아서 문제를 해결해야 할 필요가 있거나 나중에 문제가 발생할 것이라고 생각됩니다.

+0

나는 이것에 동의하지 않지만 프로젝트의 다른 단계에서 다른 사람의 코드를 재 설계하는 것은 선택 사항이 아니다. :( – Peanut