2009-03-19 4 views
4

Я не ясно об этом ....MVP по Asp.Net WebForms

При наличии в GridView на View, это контроллер, который должен настроить источник данных, колонки, и т.д.? или мне просто нужно разоблачить материал DataBinding, запустить его из контроллера и позволить html/codebehind на представлении обрабатывать все рендеринг и проводку?

Чтобы быть более точным: по мнению я должен

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

Или она должна быть (из MVP pattern - Passive View and exposing complex types through IView (Asp.Net, Web Forms))

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

Может быть, у меня все это неправильно ....

Где я могу найти пример, который не является примером «Hello world» в MVP для ASP.Net ???

ответ

4

Ваш контроллер должен отвечать за настройку «результата» привязки данных. Представление отвечает за правильное отображение.

Так, например, ваш веб-форма/UserControl (View) может иметь источник данных, представленный как свойство объекта, что ваш взгляд должен знать, как обращаться, когда он получает его:

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

Так что, если вам нужно есть событие ItemDataBound, я все равно буду обрабатывать его в представлении. Хотя в этом случае может существовать бизнес-логика. Если вам нужно иметь бизнес-логику в событии, я бы поместил его в результат MyObject, прежде чем он будет передан в представление.

Таким образом, пример должен состоять в том, чтобы иметь свойство «MyObject» быть «AllowDelete» и в ItemDataBound, значение этого свойства определяет, включен ли столбец в GridView или нет.

3

Только что выслушали недавние темы Hanselminutes по этой теме, возможно, стоит взглянуть на проект http://webformsmvp.com/, который, похоже, привнесет немного жесткости в разделение проблем в WebForms.

Смежные вопросы