2012-07-17 3 views
0

이 부분은 설명하기가 약간 까다 롭습니다.MVC3 모델 디자인과 유효성 검사를 일치시킬 수 없습니다.

MVC3 프로젝트에서 일하고 있습니다.

오브젝트 1

int ID 
IEnumerable<Object2> Object2s 

Object2

int ID 
[Required] 
string Name 
IEnumerable<Object1> Objects1s 

내가 다음 오브젝트 1이 양식을 사용하여 업데이트하고 싶었 : 나는 다음과 같이 내가 모델을 설계 그래서 다 대다 관계를 가진 두 개의 개체가 여기에는 Object2의 각 Object2에 대한 체크 박스 목록이 포함됩니다. Object2가 Object2s.The보기에서 제거해야하는 경우이 다음과 유사한 보였다 점검 할 것 :

@Html.EditorFor(c => c.ID) 

if (Model.Object2s.Count() > 0) 
{ 
    @Html.EditorFor(c => c.Object2s) 
} 

주 - c.Object2s의 EditorFor 사용자 정의 EditorTemplate입니다.

문제는 서버 측 유효성 검사에서 각 Object2 개체의 Name 속성 집합이 설정되어 있지 않아 오류를보고하는 경우입니다. Name 속성은 Object1을 업데이트하기 위해 중요하지 않습니다.

IEnumerable<int>이 아닌 IEnumerable<Object>으로 개체를 정의하면 잘못 되었습니까?

Object2에 대한 유효성 검사를 중지하는 또 다른 방법이 있습니까?

답변

0

확인 Object2s 속성을 바인딩하지 않아서이 특정 문제를 해결할 수는 없지만 정확하게 수행 할 수는 없습니다. 대신 컨트롤러에서 int[] 개의 선택된 체크 박스를 선택하여 Object2s 속성을 채 웁니다.

+0

위의 업데이트 - 나는'Object2s'를 묶지 않고'int []'를 선택하는 것이 올바른 방법이라는 결론을 내 렸습니다. 그러나 바인딩을 원한다면 해결책은'Object2' 엔티티 모델에서 'Required'유효성 검사를 제거하고'Object2'를 기반으로 한 뷰 모델에 배치하는 것입니다. – WhiteWade

관련 문제