100 개가 넘는 필드가있는 다소 큰 SQL 데이터베이스 테이블에 바인딩하려고합니다. 기본적인 CRUD 작업을 수행하고 있으며 편집 할 때는 페이지 길이를 관리하기 쉽고 사용자 친화적으로 유지하기 위해 편집을 두 페이지 (보기)로 나누기로 결정했습니다. Entity Framework와 함께 MVC 3 (C#)을 사용하여 데이터베이스를 매핑합니다.MVC 3 모델이 긴 테이블의 절반에 바인딩
내 질문 - 각 ActionResult에서이 테이블의 "절반"에 바인딩하려면 어떻게해야합니까? 두 가지 문제가 있습니다. 부분 클래스와 MetadataType 특성을 사용하여 대부분의 입력을 확인합니다. 한 페이지에서 다른 페이지에 대한 필드의 유효성을 검사하지 않도록 유효성 검사를 어떻게 분할합니까? 둘째, 어떻게 테이블의 속성 중 절반에만 바인딩합니까? 많은 것은 nullable이 아니며 해당 양식 입력없이 바인드하려고하면 데이터베이스 오류를 유발합니다.
내 두 ActionResults에서 [Bind (Include = "...")] 또는 [Bind (Exclude = "...")]를 사용할 수 있지만 꽤 비논리적이며 비 DRY로 표시 될 수 있음을 알고 있습니다. include 또는 exclude 태그에서 50 개의 개별 필드. 이 작업을 수행하는 더 좋은 방법이 있습니까?
ViewModel 클래스를 사용하여 해당 페이지에서 편집 할 수있는 데이터를 나타낼 것을 고려 했습니까? 그런 다음 AutoMapper를 사용하여 엔터티와 ViewModel 간의 속성 매핑을 처리 할 수 있습니다. – epignosisx
이 ViewModel 클래스는 분명히 전체 테이블에 대한 EDM 클래스에서 상속받지 못했습니다 (또는 여전히 "나머지 반"에서 필드를 바인딩하려고 시도합니다) ... 그래서이 클래스를 테이블에 다시 바인딩하는 것을 어떻게 알 수 있습니까? ? – Sylver
Entity와 ViewModel은 별도의 클래스입니다. 하나는 다른 하나로부터 상속받지 않습니다. 한 클래스의 각 속성을 다른 클래스에 수동으로 매핑해야합니다. 지루한 작업이지만 AutoMapper를 사용하여 매핑을 처리 할 수 있습니다. – epignosisx