2011-02-23 3 views
2

하나의보기 페이지 (MyView.aspx)와이 페이지에 바인딩 할 많은 데이터 원본이 있습니다.ASP.NET MVC2 - 모델 하나의보기 페이지에서 여러 데이터 소스 바인딩 - 옵션?

등 내보기에서

, multilple 내 optiosn 무엇인가 등,이 책, 출판사, 댓글이

그 중 각 하나, 목록리스트를 제공하는 개체가를 말할 수 있습니다 모델 biding?

각각 하나가 비 었는지 확인한 다음 열거하고 싶습니다. 하지만 inheriet에서 페이지를 설정하면 ModelingCount()를 검사 할 수 없습니다.

내 옵션에는 어떤 것이 있습니까? 컨트롤/부분보기에서 각 컨텐트 영역을로드해야합니까?

또는 각 개체를 ViewData로 덤프 한 다음보기에서 전송하여 개수를 확인할 수 있습니까?

내 문제를 살펴본 데 대해 감사드립니다.

답변

6

모든 다른 데이터 필드의 모든 목록을 포함하는 ViewModel을 사용하고 View를 채우는 데 사용하셨습니까?

예 :

뷰 모델 :

보기 :

를 특정 분야가 그것을 통해 열거에 널 (null) 이전 인 경우

public class MyViewModel 
{ 
    List<Book> Books {get; set;} 
    List<Publisher> Publishers {get; set;} 
    List<Comment> Comments {get; set;} 
    //Other fields... 

    //Constructors... 
} 

이 그런 다음보기에서 간단히 확인할 수 있습니다

if(Model.Books.Count() != 0) 
{ 
    //Enumerate through results here 
} 
+0

안녕하세요, 좋은 생각입니다. 나는 ViewModels에 대해 잊고있다. 우리 팀은 가능한 한 구체적인 객체 (게시자 객체 등)를 사용하기를 원합니다. 각 모델에 대한 부분 뷰를 생성하는 것이 좋을까요? – nocarrier

+0

위와 같이 구현할 수 있어야하며 모든 객체를 단일보기로 전달하면됩니다. 그러나보기에서 단일 유형의 데이터 만 표시하려는 경우 아이템 컬렉션을 전달하는 것이 최선의 방법 일 수 있습니다. –

+0

많은 도움이되었습니다. 당신의 도움을 주셔서 감사합니다! – nocarrier

0

Rionmonster가 가장 좋은 해결책 일 것입니다. 또 하나는 강력한 형식의 부분보기를 사용하는 것입니다. 뷰 데이터에 모든 것을로드 한 다음 각 부분 뷰에 각 세그먼트를 주입 할 수 있습니다.

+0

나는 동의한다, 각 객체의 객체 목록을 유지하기위한 모델을 만드는 것이 좋은 방법이다. 나는 강력하게 형식화 된 parial 뷰를 고려하고 있는데, 구체적인 오브젝트 (Publisher 등)에 직접 바인딩 할 수 있기 때문입니다. 또한 AJAX를 통해로드 할 컨텐트 영역을 변환하려는 경우 필자는 parital 뷰를 사용하여 그렇게해야합니다 ... 올바른 것으로 들리니? – nocarrier

+0

부분보기로 분해하면 Ajax 응답이 일부만 반환되어 필요한 비트 만 다시로드 할 수 있으므로 Ajax 수명이 상당히 단축됩니다. –

관련 문제