2012-03-29 5 views
0

지금까지 C# MVC3에서는 단 하나의 모델 만 사용한 컨트롤러 하나만 사용해야했습니다.여러 모델을 사용하는 컨트롤러?

하지만 이제는 내 컨트롤러에서 두 모델에 액세스해야한다고 생각합니다. 이것이 MVC 패턴에서 허용되는지 궁금하네요?

프로필 컨트롤러가 있습니다. ProfileController는 사용자의 프로필 정보를 분명히 보여줍니다. 그러나 사용자가 만든 그룹처럼 내가 보여주고 싶은 다른 데이터도 있습니다. 그 때문에 그룹스 모델도 있습니다.

하나의 컨트롤러에서 두 데이터를 모두 가져와야합니까?

답변

3

하나의 컨트롤러에서 두 데이터를 모두 가져와야합니까?

public ActionResult ShowProfile() 
{ 
    var model = new MyViewModel(); 
    model.Profile = ... 
    model.Groups = ... 
    return View(model); 
} 

이제보기가 강하게 뷰 모델에 입력됩니다 :보기에이보기 모델을 통과 한 후

public class MyViewModel 
{ 
    public ProfileModel Profile { get; set; } 
    public GroupsModel Groups { get; set; } 
} 

과 : 뷰 모델을 사용하여

@model MyViewModel 

정보를 표시 할 수 있습니다 :

@Html.DisplayFor(x => x.Profile.SomeProperty) 
+0

+1 이것은 일반적으로 취하는 접근 방식입니다. – James

+0

감사합니다. 좋은 설명입니다. 내가 확실히하고 싶은 한가지. 이 ViewModel을 "Models"폴더에 둘 수 있습니까? 또는 "ViewModels"라는 별도의 폴더를 만드는 것이 더 좋습니까? – w00

+0

@ w00 - 개인적으로 모든 모델을 동일한 폴더에 보관하는 경향이 있습니다 (보기/데이터에 관계없이). 물론, 예를 들어, 계층화 된 아키텍처. – James

1

단일보기/컨트롤러에 너무 많은 것을 넣지 않는다고 가정하면 필요한 데이터가있는 간단한보기 모델을 구성하는 것이 어떻습니까?

public class ProfileInfo 
{ 
    public Person Person 
    { 
     get; 
     set; 
    } 

    public List<Group> Groups 
    { 
     get; 
     set; 
    } 
} 
관련 문제