2011-09-02 7 views
1

enter image description here 많은 데이터가 포함될 한 페이지가 있습니다. 페이지의 개요가 이미지에 있습니다. 출력용으로 "면도기"엔진을 사용했습니다. 나는 내 코드 때문에 데이터베이스에서 오는 데이터를 각 섹션 이 부분도있을 것입니다 리팩토링 경우 asp mvc 면도기 구조화 방법에 대한 조언이 필요합니다.

  • 지금 궁금

    내가 뭔가를받을 수 있습니까?
  • 이 페이지에서 필요한 데이터를 모두 표시하려면 약 20 개의 값 개체가 필요합니다.

나는 필요한 모든 데이터를 포함하는 하나의 "ViewModel"클래스를 만들고이 면도칼 페이지 모델로 viewModel 클래스를 설정했습니다. 이것이 올바른 방법인가요 아니면 더 똑똑한 방법이 있습니까?

public class MyViewModelClass{ 
    public ValueObjectx x; 
    public ValueObjecty y; 
    public ValueObjectz z; 

    public List<ValueObjectT> tList; 
    public List<ValueObjectG> gList; 
    public List<ValueObjectS> sList; 
} 

답변

4

이와 같은 시나리오에서는 일반적으로 각 섹션이 부분보기로 표시됩니다. 각 섹션은 자체 레이아웃과 ViewModel을 담당합니다. 이렇게하면 너무 많은 것을 알기 위해 슈퍼 뷰를 갖는 경향을 방지 할 수 있습니다.

+0

대신 renderAction 메서드를 사용하려면 renderPartial decidec을 사용하십시오. – 1110

1

모든 데이터에 하나의 ViewModel을 사용하지 않습니다. 실제로 서버에 다시 게시 될 수있는 데이터에 대해서만 ViewModel을 사용합니다. 목록과 같은 다른 모든 데이터는 ViewBag에 저장합니다. Like :

public ViewResult SomeAction() 
{ 
    var model = GetYourModelData(); 
    ViewBag.TList = GetTList(); 
    ViewBag.GList = GetGList(); 
    ViewBag.SList = SList(); 
    return View(model); 
} 

많은 목록을 사용하면 별도의 도우미 개체에 넣을 수 있습니다.

"이 질문에 답변해야합니다"라는 의미가 아니라는 점에 유의하십시오. 그러나 내가 본 것처럼 뷰의 모델은 하나의 것이고 뷰의 드롭 다운 등의 데이터가 실제 데이터이고 다른 데이터는 ViewData 속성에 넣어야하지만 ViewBag은 동적 래퍼입니다. ViewData 속성 그런 다음 각 섹션을 구성해야하는 부분 뷰에 대한 입력으로 ViewBag의 등록 정보를 사용할 수 있습니다.

관련 문제