MVP

2009-03-19 7 views
4
이것에 대해 명확하지 않다

....MVP

보기에있는 gridview를 가진 경우 등 데이터 소스, 열을 설정하는 컨트롤러가 무엇입니까? 아니면 그냥 데이터 바인딩 물건을 노출해야합니다, 컨트롤러에서 화재 및 html/codebehind보기에서 모든 렌더링 및 배선을 처리하자?

는 더 정확하게하려면보기에 내가

private GridView _gv 
public _IList<Poco> Source { 
    get {_gv.DataSource;} 
    set {_gv.DataSource = value; 
     _gv.DataBind();} 
} 

을해야하거나

private GridView _datasource; 
public DataSource 
{ 
    get { return _datasource; } 
    set 
    { 
    _datasource = value; 
    _datasource.DataBind(); 
    } 
} 

어쩌면 내가 모든 잘못을 보내고있어 (MVP pattern - Passive View and exposing complex types through IView (Asp.Net, Web Forms)에서)해야한다 ....

ASP.Net의 MVP에서 "Hello world"가 아닌 예는 어디에서 찾을 수 있습니까?

답변

4

컨트롤러가 데이터 바인딩의 "결과"설정을 담당해야합니다. 보기는 그것을 적절하게 표시하는 역할을합니다. 필요하면 그래서

public MyObject DataSource 
{ 
    set 
    { 
    _datasource = value; 
    _datasource.DataBind(); 
    } 
} 

:

그래서 예를 들어, 웹 양식/UserControl을 (보기)보기가 그것을받을 때 처리하는 방법을 알고 있어야 객체 속성으로 제공하는 데이터 소스를 가질 수있다 ItemDataBound 이벤트가 있으면 여전히 뷰에서 처리합니다. 비록 이벤트에 비즈니스 로직이있을 수 있습니다. 이벤트에 비즈니스 로직이 필요할 경우 뷰에 전달되기 전에 MyObject 결과에 배치합니다.

예를 들어 "MyObject"속성을 "AllowDelete"로 설정하고 ItemDataBound에서이 속성의 값에 따라 GridView의 열을 사용할 수 있는지 여부를 결정할 수 있습니다.

3

이 주제에 대한 최근 Hanselminutes를 방금 들었을 때 http://webformsmvp.com/ 프로젝트를 살펴볼 필요가 있습니다.이 프로젝트는 WebForms 내의 문제를 분리하는 데 다소 강건한 것으로 보입니다.