2013-02-08 3 views
0

컨트롤러의 서명에있는 매개 변수를 통해 모든 관련 데이터를 이미 사용할 수있는 경우 뷰 모델을 사용할 때의 요점은 무엇입니까? 나는 비슷한 여기에 예제를 많이 봤어요 :데이터가 이미 존재할 때 컨트롤러에서 viewmodel의 목적

public ActionResult Index(BasicPage currentPage) 
    { 
     var model = new BasicViewModel { Heading = currentPage.Heading, Body = currentPage.MainBody, MyBlock = currentPage.MyBlock }; 
     return View(model); 
    } 

왜 그냥보기에 직접이 예에서 "currentpage"에 보내지? 거기에 그렇게함으로써 나쁜 습관으로 여겨지는 것이 있습니까?

위의 질문은 asp.net-mvc에 대한 일반적인 질문이었습니다. Episerver에 대한 질문도 여기에 추가하겠습니다. 운이 좋다면 누군가도 대답 할 수 있습니다.

MVC로 수행 된 Alloy 사이트를 살펴볼 때 위의 컨트롤러와 비슷한 동작을 보았습니다. 모든 컨트롤러에서 viewmodel이 만들어졌지만 컨트롤러로 보내진 페이지를 View로 직접 보냅니다. viewmodel을 만드는 것은 불필요한 단계 인 것 같습니다. 가장 중요한 것은 여기에 몇 가지 중요한 부분이 빠져 있습니다 =)

답변

1

viewmodels 뒤에 아이디어는 프리젠 테이션에 최적화되어 있다는 점이다. 도메인 객체를 사용하는 경우 뷰 자체에 로직을 넣을 필요가 있습니다. 당신이 더 적절한 장소에서 관리하는이 논리를 가질 수 있도록 뷰 모델은 몇 가지 플렉스을 제공하므로보기에 로직을 넣는 것은 좋지 디자인입니다.

는 또한, 당신은 단지 특정 뷰에 필요한 필드를 포함, 당신의 ViewModel 간단하게 할 수 있습니다. 입력에 대한

1

코드 예제는 좋은 생각이 아닙니다. 그러나 뷰 모델을 갖는 것은 좋은 패턴입니다. 지금 당장 필요하지는 않겠지 만보기 모델을 사용할 수 있고 제자리에두면 추가 기능을 추가 할 수있는 좋은 옵션입니다. 나는 그의 MVC 템플릿에서 조엘의 개념으로 갈 것 : http://world.episerver.com/Download/Items/EPiServer-CMS/EPiServer-7---CMS/EPiServer-7-MVC-Templates/

+0

감사합니다. 나는 조엘의 개념에 더 많은주의 깊게 살펴 보겠습니다. –

관련 문제