2009-08-16 2 views
3

일반적으로 MVC 패턴에서 사용자가 요청을 보낼 페이지를 클릭하면 컨트롤러가 요청을 처리 한 다음 모델을 사용하여 요청을 처리하고 적절한보기로 라우트합니다.보기와 모델간에 종속성이 있습니까?

수동 모델과 활성 모델에 대한 게시물을 읽었지만 뷰가 모델과 직접 상호 작용할 가능성이 있습니다. 양방향 관계 (예 : 모델 < ->보기) 방향성 (즉, 모델 ->보기).

모델과보기 사이에 적절한 관계가 있습니까? ASP.NET MVC 프로젝트에서 모델과 뷰의 관계가 있거나 모델과 독립적이어야합니까?

답변

2

여러분의 견해를 모델에 맞게, 즉 강력한 형식으로 작성하는 것이 거의 항상 바람직하다고 생각합니다. 모델이 관련 데이터를 공유하는 경우 데이터의 해당 하위 집합에 특정한 부분 뷰를 재사용 할 수 있습니다. ASP.NET MVC에서 모델은 컨트롤러 기능인 웹 요청을 통해서만 상호 작용할 수 있기 때문에 뷰를 알지 못합니다. 웹 서비스를 통해 상호 작용할 수 있다고 말할 수는 없지만, 다른 웹 서비스를 선호한다고 생각합니다. 실제로 MVC를 사용하면 REST 기반 컨트롤러 작업을 대신 사용하여 별도의 웹 서비스를 개발할 필요가 거의 없습니다.

+0

+1 ASP.NET MVC의 필수 풍미를 포착합니다. –

+0

하지만 뷰와 모델간에 상호 작용이 있습니다. 컨트롤러가 요청을 처리하고 모델을 사용하며 뷰가 생성되는 동작에 따라 볼 수 있습니다. 따라서 순환은 C-> M-> C-> V (C- 컨트롤러, M- 모델, V- 뷰)이면 M-> V – kurozakura

+0

과 같은 인스턴스가있을 수 있습니다. 컨트롤러는 모델 또는 뷰 모델을 다시 뷰로 전달할 수 있습니다. 뷰는이를 직접 액세스 할 수 있지만 모델의 값을 읽는 것만 가능합니다. 이는 실제로 지속되지 않는 뷰 모델을 선호하는 한 가지 인수입니다.모델 자체에는 일반적으로 특정 뷰 특정 데이터가 포함되지 않지만 때때로 실제로 뷰 모델에 마크 업을 삽입합니다. 예를 들어 열 중 하나에 링크가 포함되어야하는 그리드 모델과 같습니다. – tvanfosson

0

Java Swing MVC는 뷰와 컨트롤러가 결합 된 형태로 구현되며, 모델에서 읽은 후 이벤트를 등록하여 효과적으로 서로 느슨하게 종속되게 만듭니다.

보통 웹 응용 프로그램은 실제보기가 클라이언트에서 렌더링되고 모델에서 이벤트를 쉽게받을 수 없으므로 웹 응용 프로그램에서는이 작업을 수행하지 않으므로 관계가 한 방향으로 만 진행됩니다. 모델이 클래스에 직접적으로 의존하지 않고 뷰를 보는 한, 모델과 뷰 사이의 관계를 갖는 것이 결코 바람직하지 않습니다. 이 경우 종속성주기가 설정되어 유지 관리 및 특히 테스트에 해를 끼칩니다.

예를 들어 Swing에서 이러한 방식으로 구현되는 방식은 Listener 인터페이스를 통해 이루어지며, 그러면보기에서 모델 구현을 구현하거나 제공 할 수 있습니다.

1

항상 모델을 표시하는 방법으로보기가 표시됩니다. 이 관점에 따르면 View는 Model을 인식하고 있으며 ASP.NET MVC에서는 ViewData 또는 Casting을 악용하지 않기 위해 ViewPage에서 페이지를 상속해야합니다.

이 점을 염두에두고 모델은보기를 인식하지 않으며보기에서 데이터를 사용자에게 표시하는 데 사용되는 개체입니다.

마지막으로 다른 뷰에서 동일한 모델을 공유 할 수 있습니다. 예를 들어 XML 출력은 HTML 출력과 동일한 모델을 공유 할 수 있지만보기가 매우 다를 수 있습니다.

주기가 더 많거나 적습니다. Controller가 Model을 생성하고 View에 전달하여 모델을 표시하고 상호 작용이있는 경우 입력을 Controller에 게시하고주기가 다시 시작됩니다.

관련 문제