2009-11-04 3 views
9

현재 asp.NET MVC를 사용하여 웹 사이트의 컨텐츠 관리 시스템 부분을 빌드하고 사이트 조회가 작동하는 방식을 위반하는 것처럼 보이기 때문에 모든 조회를 부분보기로 재현하는 오독한 작업을합니다.MVC 컨트롤러와 뷰에 1 대 1 관계가 있어야합니까?

예를 들어 내 FAQAdminController에는 Views : Index, AddFAQ, EditFAQ, ConfirmDeleteFAQ가 있으며 부분보기가되어야합니다.

각 컨트롤러에는 단일보기가 있어야하며 페이지 내용으로 끝나는 다른 모든 양식이나 동작은 부분보기로 구현되어야한다고 들었습니다.

게시하기 전에 확인한 문서, 기사, 위키 또는 SO 질문이 없으므로 컨트롤러 당 여러 개의보기가 MVC 모델을 위반하는지 여부에 대한 답변이 나와 있습니다.

엄밀히 말하면, MVC 컨트롤러와 뷰는 1 대 1의 관계가 있어야합니까?

답변

16

이 나는 ​​각 컨트롤러는 하나의보기 및 부분보기로 구현해야 표시 할 페이지의 콘텐츠에 끝나는 모든 다른 형태이나 행동을해야한다고 들었습니다.

그건 말도 안돼. 엄밀히

, MVC 컨트롤러와 뷰는 1 일 관계를해야합니까?

절대적으로 아닙니다. 응용 프로그램을 논리적이고 일관된 방식으로 디자인하십시오.

컨트롤러는 일반적으로 많은 작업을 처리하고 다양한보기를 반환합니다. 사용자와 관리자 모두를 위해 모든 뷰를 렌더링하는 FAQController를 고려할 수 있습니다.

8

MVC의 목적을 상실한 것 같습니다. 컨트롤러는 모델을 표현하는 데 사용할 뷰를 결정할 수 있어야합니다.

2

MVC 컨트롤러는 둘 이상의보기를 지원할 수 있어야합니다.

1

MVC 컨트롤러는 여러보기를 지원할 수 있고 지원해야합니다. 단일 제어기가 지원하는보기가 동일한 비즈니스 오브젝트 또는 프로세스와 관련되도록하는 것이 유용합니다.

public class ExampleController : Controller 
{ 
    public ActionResult Index() 
    { 
      //get list of objects 
      return View(); // uses a view called Index 
    } 

    public ActionResult Edit(string id) 
    { 
      Object target = ObjectManager.GetObject(id); 
      if (target == null) 
      { 
        return New();//view for creating a record 
      } 
      else 
      { 
        ViewData.Add("detail", target); 
        return View("Detail");//using a view not name-mapped to controller method name 
      } 
    } 

    public ActionResult New() 
    { 
      return View(); 
    } 

} 
아래의 예를 고려