Шаблон MVP - пассивное представление и раскрытие сложных типов через IView (Asp.Net, веб-формы) - PullRequest
3 голосов
/ 30 сентября 2008

Я недавно переключился на шаблон MVP с подходом пассивного просмотра. Мне очень удобно работать, когда интерфейс представления предоставляет только основные типы clr, такие как строка, сопоставленная с TextBoxes, IDictionary, сопоставленная с DropDownLists, IEnumerable, сопоставленная с некоторыми сетками, повторители.

Однако, этот последний подход работает только тогда, когда из этих сеток я забочусь только об одном столбце. Как я могу отобразить многострочное содержимое сетки внутри IView? На данный момент мне приходит в голову два решения, оба не блестящие:

  1. Создайте DTO для содержимого сетки и выставьте IEnumerable в IView, или
  2. Выставьте IEnumerable или просто "сетку", как в IView.

Первое решение, по-видимому, нарушает правила пассивного просмотра, приближаясь к шаблону Supervising Controller, а второе вообще нарушает шаблон MVP. Как бы вы справились с этим?

спасибо, Лукаш

1 Ответ

3 голосов
/ 30 сентября 2008

MVP значительно упрощает разработку веб-форм, за исключением случаев, подобных этому. Однако, если вы использовали TDD для проверки того, что вашему IView действительно требуется эта сетка данных, то я не вижу, в чем проблема.

Я полагаю, вы пытаетесь сделать что-то вроде этого:

public interface IView
{
 DataTable DataSource {get; set;}
}

public class View : IView {

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

При использовании с паттерном MVP этот маленький паттерн очень полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...