Паттерн MVP - пассивный просмотреть и обнажая сложные типы через руки (Asp.Net, веб-формы)
Вопрос
Недавно я перешел на шаблон MVP с подходом пассивного просмотра.Я чувствую, что с ним очень удобно работать, когда интерфейс view предоставляет только базовые типы clr, такие как string, сопоставленные с текстовыми полями, IDictionary, сопоставленный с выпадающими списками, IEnumerable, сопоставленный с некоторыми сетками, повторители.
Однако этот последний подход работает только тогда, когда из этой сетки меня интересует только один столбец.Как я могу отобразить многорядное содержимое сетки внутри IView?На данный момент мне приходят в голову два решения, оба не блестящие:
- Создайте DTO для содержимого сетки и предоставьте IEnumerable в IView, или
- Предоставьте IEnumerable или просто "сетку", как в IView.
Первое решение, по-видимому, нарушает правила пассивного просмотра, приближаясь к шаблону контролирующего контроллера, а второе вообще нарушает весь шаблон MVP.Как бы вы справились с этим?
thanks, Łukasz
Решение
MVP значительно упрощает разработку webforms, за исключением подобных случаев.Однако, если вы использовали 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 я нахожу этот небольшой шаблон весьма полезным.