MVP на веб-формах Asp.Net - PullRequest
4 голосов
/ 20 марта 2009

Мне не ясно об этом ....

При наличии вида сетки в представлении должен ли контроллер настраивать источник данных, столбцы и т. Д.? или мне просто нужно выставить объект DataBinding, запустить его из контроллера и позволить html / codebehind в представлении обрабатывать весь рендеринг и подключение?

Чтобы быть более точным: на виду я должен иметь

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

Или это должно быть (из Шаблон MVP - пассивный просмотр и предоставление сложных типов через IView (Asp.Net, Web Forms) )

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

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

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

Ответы [ 2 ]

4 голосов
/ 20 марта 2009

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

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

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

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

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

3 голосов
/ 13 марта 2010

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

...