Модификация управления на уровне представления - PullRequest
2 голосов
/ 01 декабря 2011

Я использую GridView, и привязка данных происходит на уровне Presenter, но ячейка 1, например, должна быть изменена и преобразована в элемент управления HyperLink, затем мне нужно вызвать событие RowDataBound на уровне Presenter и выполнить изменение внутри этого события. Это нормально с MVP?

1 Ответ

1 голос
/ 05 декабря 2011

Обычно я выполняю привязку данных и обработку событий на уровне просмотра.Делая это в Presenter, вы создаете зависимость между Presenter и View, которую вы хотите избежать.Я не уверен, как вы будете тестировать метод Presenter, который вызывает .DataBind() в GridView.

Что я хотел бы сделать (и то, что я считаю стандартным), это добавить свойство к коду позадиваш класс представления, который представляет данные для GridView.Так, скажем, ваш GridView показывает сотрудников, свойство может быть примерно таким:

public List<Employee> Employees 
{ 
    get { return (List<Employee>)GridView1.DataSource; }
    set // The Presenter calls this
    {
        GridView1.DataSource = value;
        GridView1.DataBind();
    }
}

Презентатор просто установит это свойство, а затем вы выполните привязку данных и обработку событий, как это обычно делается с веб-формами.

Это также позволит вам выполнить модульное тестирование вашего докладчика, если вы захотите.Предполагая, что ваше представление реализует интерфейс, вы можете использовать другую реализацию для вашего модульного теста, т.е. установщик не будет вызывать .DataBind(), это может быть просто автоматическое свойство.Вы можете создать фиктивное представление, передать его Presenter, а затем проверить, что ваше свойство не равно нулю или что-то в этом роде.

...