0

MVC 3의 프로젝트에서 현재 각각 하나의 HTML 폼 (마법사 기반 디자인과 유사)을 포함하는 두 개의 뷰에 대해 하나의 데이터 모델을 유지하기 위해 Entity Framework를 활용하고 있습니다.MVC 3 모델의 면도기 부분 유효성 검사

사용자가 첫 번째보기에서 해당 필드를 채우고 양식을 제출하면 전체 모델에 대한 클라이언트 측 유효성 검사가 실행되고 입력 전까지 사용할 수없는 필드에 대한 유효성 검사 오류가 표시됩니다. 두 번째보기 인스턴스가 생성됩니다.

저는 현재 첫 번째보기에 대한 클라이언트 측 유효성 검사를 완전히 해제하는 해결 방법을 구현했습니다. 그러나 실제로 유효성이 확인되지 않은 데이터로 내 모델을 채우려는 아이디어에는 관심이 없습니다. 이것은 나쁘다. 알았어.

첫 번째보기의 필드를 부분적으로 확인하고 전체 데이터 모델의 발동을 트리거하는 방법이 있습니까?

+1

첫 번째보기에 대한 코드를 알려주고 어느 것이 유효하지 않은 유효성 검사를 얻고 있는지 알려줄 수 있습니까? 그것은 그 문제를 해독하는 것이 훨씬 쉽다. – RhysW

답변

0

ViewModels가 여기에 있습니다. 도메인 모델을보기로 직접 바인딩하는 대신보기 모델을 만들어보기 위에 바인딩해야합니다.

+0

나는 나의 질문에 정말로 답하지 않지만, 당신의 의견을 고맙게 생각한다. 가능하면 현재 아키텍처를 그대로 유지하고 하나의 "도메인"모델을 고수하고 싶습니다. 내가 ViewModels를 활용한다고 제안하는 것이 내가 부분적으로 검증 할 때 겪고있는 문제를 직접적으로 다루지는 않는다. – user1449244

+0

이미 아키텍처가 있고 사용자 정의 모델 바인더로 이동해야하는보기 모델을 변경할 수없는 경우 SO reg에 많은 스레드가 있습니다. 그. – VJAI

0

EF 모델에서 유효성 검사를 직접 수행 할 필요가없는 경우 MetadataType을 사용하여 필요에 따라 부분 유효성 검사를 수행 할 수 있습니다. 내 긴 example here on stackoverflow을보십시오.

+0

아, 네가이 질문을하기 전에 내 수색의 초기 단계에서 그 설명을 보았다. 그것은 매우 철저하고 자세하지만, 슬프게도 내 질문에는 직접적으로 대답하지 않습니다.문제를 깨고 인터페이스 클래스를 통해 유효성을 처리한다는 개념을 이해하지만, 전체적으로 부분 유효성 검사에 대한 대답을 찾는 데 정말로 관심이 있습니다. – user1449244

+0

EF 모델에 유효성 검사를 직접 수행해야합니까? –

+0

반드시 그런 것은 아니지만 현재 구조화 된 것입니다. – user1449244

0

입력 해 주셔서 감사합니다. 그러나, 나는 아주 간단한 방법으로 해결책을 얻을 수 있었다. ... 처음보기의 HttpPost 요소에

if (ModelState.IsValidField("FirstField") && ModelState.IsValidField("SecondField")) return RedirectToAction ("NameOfAction", model); else return View();

다음 코드를 배치하여 ... 나는 부분 현장 검증을 달성 할 수 있었다. 그러나이 필드 특정 접근 방식은 첫 번째보기의 제출 단추에 "취소"클래스가 있고 (첫 번째보기에없는 필드에 대해) 생성 된 추가 유효성 검사 오류가 위의 경우에 수동으로 지워진 경우에만 작동합니다 if 문. 이렇게하려면 다음을 사용하십시오.

ModelState["FieldName"].Errors.Clear(); 

아키텍처의 주요 변경 사항이 없습니다. 부분 뷰가 없습니다. 유효성이 확인되지 않은 데이터는 전달하지 않습니다.

작품 아주 잘 ...

참고 :

ModelState.Clear();

두 번째보기가 처음 호출되는 액션 : 유효성 검사 오류, 사용과 두 번째보기를로드하는 경우. 이렇게하면 두 번째보기로드가 깨끗하고 오류가 없으며 최종 폼 제출시 나중에 유효성 검사 오류가 표시됩니다.

관련 문제